我不明白为什么我一直得到一个IndexOutOfBounds异常。允许用户输入最多10个数字或-99的标记值。第10个数字引发错误。如果我编辑了数字。长度为数字。长度为-1,它不会抛出错误,但它只接受9个数字。有什么想法吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace SomeProggy
{
class Program
{
static void Main(string[] args)
{
int[] numbers = new int[10];
int x = 0;
string entryString = "";
int counter= -1;
while (numbers[x] != 10 && counter < numbers.Length && entryString != "-99")
{
Write("Enter up to 10 numbers > ");
entryString = ReadLine();
numbers[x] = Convert.ToInt32(entryString);
x++;
counter++;
}
}
}
}
答案 0 :(得分:1)
更改循环条件,以便首先检查数组长度:
while (counter < numbers.Length && numbers[x] != 10 && entryString != "-99")
{
// ...
}
否则当x
增加到10
时,访问numbers[x]
时它将超出范围。这将在counter < numbers.Length
检查之前发生。