所以我的问题是我想在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}");
}
答案 0 :(得分:0)
尝试使用inc <金额而不是inc <=金额
for (int inc = 0; inc < amount; inc++)
{
numberInputs[inc] = int.Parse(Console.ReadLine());
if (inc % 2 == 0)
{
sumEven *= numberInputs[inc];
}
else
{
sumOdd *= numberInputs[inc];
}
}
或
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
答案 1 :(得分:-1)
您尝试访问的索引在大多数编程语言中都不存在,并且c#数组也从索引0开始,因此,如果您有10个元素,则最大的索引为9,因此当您输入10个数字时,数组的最大索引将为9.尝试使用<代替<=
如果您只想忽略该错误,可以将其放在try catch块中,然后将要执行的代码放在finally块中
您可以在此处找到示例 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally