我正在尝试构建一个简单的程序,用 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:索引超出了数组的范围。”
我也尝试过使用 IndexOf,但没有成功。有什么想法为什么不起作用以及如何修复它吗?
这将是 y 循环的第二次迭代。您尚未将 MaximumNum 重置回 minvalue,因此它将寻找您上次删除的那个。