只要我进入while循环,程序就会抛出Index超出范围的异常,而不会获得行和列值。 getint是一种获取用户输入的方法,同时确保值在范围内
while(filled>0)
{
row = getint("row: ");
row--;
column = getint("column: ");
column--;
fields[row, column]=getint("value: ");
filled--;
}
编辑:
static int getint(string question)
{
string temp;
int tempint=0;
while (check != 0)
{
check = 0;
Console.Write("\nPlease enter the {0}",question);
temp = Console.ReadLine();
if(!int.TryParse(temp, out tempint))
{
check++;
}
if(question.Length<14 & (tempint<1 | tempint>9))
{
check++;
Console.WriteLine("Invalid Input");
}
}
return tempint;
}
答案 0 :(得分:0)
如果超出范围的代码只能在fields[row, column]
中发生,则可以添加对行和列的界限的检查
row = Math.Max(row,0);
column= Math.Max(column,0);
row = Math.Min(fields.GetUpperBound(0), row);
column= Math.Min(fields.GetUpperBound(1), column);
答案 1 :(得分:0)
所以,错误是在while循环中,我错过了我使用全局变量“check”并且没有重置它的值的事实,当它第一次退出循环时它的值被设置为0并因此异常。