C# - for 循环问题。 index outside of bounds of array - 为什么程序没有跳出 for 循环并继续
C# - issues with for loop. index outside of bounds of array - Why the program doesn't break out of for loop and continue
所以我的问题是我想在 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}");
}
尝试使用 inc < amount 而不是 inc <= amount
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
您正在尝试访问一个不存在的索引,在大多数编程语言中,C# 数组也是从索引 0 开始的,所以如果您有 10 个元素,您的最大索引是 9,因此当您输入 10 个数字时,您的数组最大索引将是 9。尝试使用 < 而不是 <=
如果你只是想忽略这个错误,你可以把它放在一个 try catch 块中,然后把你想执行的代码放在一个 finally 块中
你可以在这里找到一个例子
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally
所以我的问题是我想在 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}");
}
尝试使用 inc < amount 而不是 inc <= amount
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
您正在尝试访问一个不存在的索引,在大多数编程语言中,C# 数组也是从索引 0 开始的,所以如果您有 10 个元素,您的最大索引是 9,因此当您输入 10 个数字时,您的数组最大索引将是 9。尝试使用 < 而不是 <=
如果你只是想忽略这个错误,你可以把它放在一个 try catch 块中,然后把你想执行的代码放在一个 finally 块中
你可以在这里找到一个例子 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally