C#-for循环问题。数组边界之外的索引-为什么程序不会脱离for循环并继续

问题描述 投票:0回答:2

所以我的问题是我想在for循环后打印出信息,但它从未真正到达代码。是否有特定原因,还是应该将所有内容都放入for循环的范围内?数组键之外的索引

`int sumEven=1, sumOdd=1;
            Console.WriteLine("Give the amount of numbers:  ");
            int amount = int.Parse(Console.ReadLine());
            Console.WriteLine("Numbers:  ");
            int[] numberInputs = new int [amount];
            for (int inc = 1; inc <= amount; inc++)
            {
                numberInputs[inc] = int.Parse(Console.ReadLine());
                if (inc % 2 == 0)
                {
                    sumEven *= numberInputs[inc];
                }
                else
                {
                    sumOdd *= numberInputs[inc];
                }
            }
            if (sumEven == sumOdd)
            {
                Console.WriteLine("Yes\n");
                Console.Write($"Product = {sumEven}");
            }
            else if (sumEven != sumOdd)
            {
                Console.Write("No\n");
                Console.WriteLine($"Even product = {sumEven}");
                Console.WriteLine($"Odd product = {sumOdd}");
            }
c# for-loop indexoutofboundsexception
2个回答
0
投票

尝试使用公司

for (int inc = 1; inc < amount; inc++)
        {
            numberInputs[inc] = int.Parse(Console.ReadLine());
            if (inc % 2 == 0)
            {
                sumEven *= numberInputs[inc];
            }
            else
            {
                sumOdd *= numberInputs[inc];
            }
        }

我也建议您通过IndexOutOfRangeException


0
投票

[在大多数编程语言中,您试图访问不存在的索引,而且c#数组也从索引0开始,因此,如果您有10个元素,则最大索引为9。请尝试使用

如果只想忽略该错误,可以将其放在try catch块中,然后将要执行的代码放在finally块中

您可以在此处找到示例https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally

© www.soinside.com 2019 - 2024. All rights reserved.