使用数组的Split方法时出现“Index Out of Bounds”错误

时间:2015-11-19 19:55:00

标签: c# arrays split indexoutofboundsexception

我正在尝试拆分此数组中的数据,但它一直给我这个错误:

  

索引越界。

数组的大小为10.创建错误的代码行是

int score = int.Parse(scoreInfo[1]);

这是我的代码:

static void Main(string[] args)
{
    const int SIZE = 10;

    for (int j = 0; j < SIZE; j++)
    {
        // prompt the user
        Console.WriteLine("Enter player name and score on one line");
        Console.WriteLine("seperated by a space.");
        // Read one line of data from the file and save it in inputStr
        string inputStr = Console.ReadLine();
        // The split method creates an array of two strings
        string[] scoreInfo = inputStr.Split();
        // Parse each element of the array into the correct data type.
        string name = (scoreInfo[0]);
        int  score = int.Parse(scoreInfo[1]);
        if (inputStr == "")
        {
            Console.WriteLine(scoreInfo[j]);
        }
    }

    Console.ReadLine();
}

2 个答案:

答案 0 :(得分:0)

我使用常量来尝试你的代码,例如&#34; Guy 19&#34;。 .Split()方法将根据空格分解输入字符串。如果您没有输入后跟数字的空格,那么您的scoreInfo [1]将为空,解析将失败。

尝试在.Split()之后添加断点,以确定scoreInfo是否正确分割为2号数组,其中[0]是播放器的名称,[1]是整数分数。如果您输入的名称类似于&#34; FirstName LastName 20&#34;那么位置[1]的信息不会是整数,解析也会失败。

你的for循环有点令人费解,你是否为10名球员的球队循环了10次?您可以将对话框置于while循环中,并在解析失败或用户键入类似&#34; exit&#34;。

之类的内容时中断。

答案 1 :(得分:0)

有些注意事项。您正在使用SIZE来表示循环应该进行多少次迭代。它不是您的阵列的大小。你的数组只会随着分裂而变大。如果用空格作为分隔符进行拆分,则在索引0和1处的数组中将有2个对象。

scoreInfo[j]大于1时,您写下j的最后一部分将会失败。