超出数组C#的范围

时间:2018-11-06 03:19:30

标签: c#

我一直遇到错误,我不知道为什么,请告诉我为什么这不起作用。它不仅给我一个错误,而且无法将第二个输入存储到userInput [1]中。

string[] name = new string[4];
double[] bankAccount = new double[4];;

int x;
for (x = 0; x <= name.Length; x++)
  {
    Console.Write("Please enter first Name and their bank status: ");
    string[] userInput = Console.ReadLine().Split();
    name[x] = userInput[0];
    bankAccount[x] = double.Parse(userInput[1]);
    Console.WriteLine(userInput[0], userInput[1]);
  }

1 个答案:

答案 0 :(得分:2)

您可能知道,数组总是从索引0开始计数元素。

string[] stringArray = { "Hello", "There" };
Console.WriteLine(stringArray.length); // this will output 2, because there are two elements
Console.WriteLine(stringArray[0]); // this will output hello, and [1] would output there

发生了什么事?

for (x = 0; x <= name.Length; x++)

在您的代码中,您试图遍历数组以查找等于或小于长度的任何值。为什么不起作用?很简单,数组从0开始计数。当您要访问数组中的元素时,需要从在0开始计数第一个元素开始。

还必须注意,虽然访问元素将从0开始计数,但元素数量本身不会从0开始计数。这就是stringArray.length返回2而stringArray[2]抛出ArrayOutOfBounds的原因。

要解决此问题,只需将您的<=条件检查更改为<