控制流程C#(超出界限)

时间:2016-09-10 03:05:14

标签: c#

我学习控制流程并尝试编写代码以获取5个不同的数字,然后存储到数组中,排序和打印。我得到例外说数组超出范围,但我不明白为什么,因为我将5个对象存储到[4]数组中。

为什么我得到这个例外的任何提示?

    public static void Three()
    {
        var numbers = new int[4];
        var i = 0;
        while (i <= 4)
        {
            Console.WriteLine("enter a number: ");
            var input = Convert.ToInt32(Console.ReadLine());
            if (Array.IndexOf(numbers, input) != -1)
            {
                Console.WriteLine("try again");
            }
            else
            {
                numbers[i] = input;
                i++;
            }
        }
        Array.Sort(numbers);
        foreach (var item in numbers)
        {
            Console.WriteLine(Convert.ToString(item));
        }
    }

1 个答案:

答案 0 :(得分:1)

  

但我无法理解为什么,因为我将5个对象存储到[4]数组中。

因为[4]数组在索引0123处保留4个对象。如果要保存5个对象,则需要int[5]并使用索引0-4。这就是为什么您通常会看到i < 4而不是i <= 4