Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算平均值时会抛出一个“;系统索引自动失效例外“;例外情况_C#_Arrays_Visual Studio_Exception - Fatal编程技术网

C# 计算平均值时会抛出一个“;系统索引自动失效例外“;例外情况

C# 计算平均值时会抛出一个“;系统索引自动失效例外“;例外情况,c#,arrays,visual-studio,exception,C#,Arrays,Visual Studio,Exception,我正在尝试编写一个黄金勘探程序,它以2D数组的形式获取初始数据地图,然后生成一张地图,上面标记了所有可能的黄金位置 但是,当计算平均值以确定是否标记勘探点时,我收到一个“System.IndexOutOfRangeException”异常,程序中断。我该如何着手解决这个问题?谢谢你事先的帮助 for (int i = 1; i < nRows; i++) { for (int j = 1; j < nCols - 1; j++)

我正在尝试编写一个黄金勘探程序,它以2D数组的形式获取初始数据地图,然后生成一张地图,上面标记了所有可能的黄金位置

但是,当计算平均值以确定是否标记勘探点时,我收到一个“System.IndexOutOfRangeException”异常,程序中断。我该如何着手解决这个问题?谢谢你事先的帮助

for (int i = 1; i < nRows; i++)
        {
            for (int j = 1; j < nCols - 1; j++)
            {
                //it is at the line below where the program breaks
                double average = (data[i - 1, j] + data[i + 1, j] + data[i, j - 1] + data[i, j + 1]) / 4;


                if (data[i, j] > average)
                {
                    map[i, j] = "*";
                }
            }
        }
for(int i=1;i平均值)
{
map[i,j]=“*”;
}
}
}

您走出了二维阵列的边界。因此,请更改代码的这一部分:

for (int i = 1; i < nRows; i++)
    {
        for (int j = 1; j < nCols - 1; j++)
for(int i=1;i

for(int i=1;i

因此您省略了边框。

您超出了二维数组的边框。因此请更改代码的这一部分:

for (int i = 1; i < nRows; i++)
    {
        for (int j = 1; j < nCols - 1; j++)
for(int i=1;i

for(int i=1;i

所以你省略了边框。

你确定标记C适合这个问题吗?C没有例外是的,这是我的错,我还在习惯美式键盘,所以我按了回车键,以为我在按散列键。
data[I+1,j]
当位于外循环末端的
i==nRows-1
时,很可能超出范围。
数据[i+1,j]
将抛出
i
循环的最后一次迭代。你确定标记C适合这个问题吗?C没有例外是的,这是我的错,仍然习惯使用美式键盘,所以我按了回车键,以为我在按散列键。
数据[i+1,j]
当位于外循环末端的
i==nRows-1
时,极有可能超出范围。
数据[i+1,j]
将在
i
循环的最后一次迭代中抛出。