我正在尝试使用C#在数组中存储十个值。如果我只使用一位数字,一切顺利。但是,每次我给两个或多个数字的数字,我得到一个错误,它超出了数组索引的范围。我怀疑它是分别存储每个数字,例如如果10是我输入的第一个数字,它将在第一个位置存储1,在第二个位置存储0。但是,我不确定。这是问题还是别的什么?我该如何解决这个问题?
(使用Microsoft visual studio 2010 ultimate)
代码:
double[] userValues = new double[10];
for (int i=0; i < userValues.Length; i++) {
Console.Write("Enter a value: ");
userValues[i] = Convert.ToDouble(Console.ReadLine());
}
我得到的错误的一个例子:
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Enter a value: 10
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Assignment1.Program.Main(String[] args) in I:\CS2350\Assignment1\Assignment1\Program.cs:line 21
Press any key to continue . . .
答案 0 :(得分:1)
异常消息告诉您错误发生在Program.cs
的第21行。您需要找到该代码行并进行审核。例如,您可以在Visual Studio中打开该代码文件,按Ctrl-G并在对话框中键入21.
在该行中可能还有另一种数组用法,但该行中索引的值超出了数组范围(小于0或大于9)。找出原因并解决。
希望有所帮助。
答案 1 :(得分:0)
如果您尝试按照自己的意思行事,此代码没有任何问题。循环条件很好。 (int i = 0; i < userValues.Length-1; i++)
只会运行9次。这不是你想要做的。当我引用9时它没有进入循环,因为它没有通过条件,因此循环将从i = 0,1,2,3 ... 8运行并且在i迭代时退出i将增加到9因此,不符合循环条件。