当我使用 FindIndex() 时,它在 c# 中返回 -1?

问题描述 投票:0回答:1

我正在尝试构建一个简单的程序,用 C# 中的数组对数字从最大到最小进行排序。

//basic number sorter. every number should be on one line and separated by a " " (space).
int[] numbers = Console.ReadLine().Split(" ").Select(int.Parse).ToArray();
int[] bigToSmall = new int[numbers.Length];
int biggestNum = int.MinValue;
for (int y = 0; y < numbers.Length; y++)
{
    for (int i = 0; i < numbers.Length; i++)
    {
        if (numbers[i] > biggestNum)
        {
            biggestNum = numbers[i];
        }
        else if (numbers[i] == biggestNum)
        {
            numbers[i] = biggestNum;
        }
    }
    var bigIndx = Array.FindIndex(numbers, row => row == biggestNum);
    numbers[bigIndx] = 0;
    bigToSmall[y] = biggestNum;
}
for (int i = 0; i < bigToSmall.Length; i++)
{
    Console.WriteLine(bigToSmall[i]);
}

当我运行程序时,我得到:“未处理的异常。System.IndexOutOfRangeException:索引超出了数组的范围。”

这也是我使用输入“1 2 3”时得到的值

我也尝试过使用 IndexOf,但没有成功。有什么想法为什么不起作用以及如何修复它吗?

c# arrays sorting indexing runtime-error
1个回答
0
投票

这将是 y 循环的第二次迭代。您尚未将 MaximumNum 重置回 minvalue,因此它将寻找您上次删除的那个。

© www.soinside.com 2019 - 2024. All rights reserved.