C#在数组边界之外

时间:2016-05-05 22:07:23

标签: c# arrays indexing

我收到了错误"索引超出了数组的范围"。我从我的教科书中输入的这段代码。似乎没有发现任何问题。

class Program
{
    static void Main()
    {
        int[] scores = new int[8];
        int x;
        string inputString;

        for (x = 0; x < scores.Length; ++x)
        {
            Write("Enter your score on test {0} ", x + 1);
            inputString = ReadLine();
            scores[x] = Convert.ToInt32(inputString);
        }

        WriteLine("\n----------------------------");
        WriteLine("Scores in original order: ");
        for(x = 0; x < scores.Length; ++x)
            Write("{0, 6}", scores[x]);

        WriteLine("\n----------------------------");
        Array.Sort(scores);
        WriteLine("Scores in sorted order: ");
        for(x = 0; x < scores.Length; ++x)
            Write("{0, 6}", scores[x]);

        WriteLine("\n----------------------------");
        Array.Reverse(scores);
        WriteLine("Scores in reverse order: ");
        for(x = 0; x < scores.Length; ++x) ;
            Write("{0, 6}", scores[x]);
    }
}
}

1 个答案:

答案 0 :(得分:5)

你有一个额外的分号

for (x = 0; x < scores.Length; ++x) ;
Console.Write("{0, 6}", scores[x]);

for循环运行,除了将x增加到最终值8之外什么都不做。然后下一行运行x仍然具有之前的值,恰好是8。

要解决此问题,请删除额外的;