2d数组索引超出范围异常

时间:2016-06-21 15:35:23

标签: c# multidimensional-array

只要我进入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;
    }

2 个答案:

答案 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并因此异常。