C# 计算平均值时会抛出一个“;系统索引自动失效例外“;例外情况
我正在尝试编写一个黄金勘探程序,它以2D数组的形式获取初始数据地图,然后生成一张地图,上面标记了所有可能的黄金位置 但是,当计算平均值以确定是否标记勘探点时,我收到一个“System.IndexOutOfRangeException”异常,程序中断。我该如何着手解决这个问题?谢谢你事先的帮助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++)
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
循环的最后一次迭代中抛出。