【发布时间】:2019-04-08 15:05:36
【问题描述】:
我有一个矩阵,每个单元格都包含我需要计算单元格及其相邻单元格的数字,并得出这些单元格的平均值。
看看我写的代码。
public Matrix imageFilterAverage() {
for (int i=0; i < _array.length;i++)
for (int j=0; i < _array[i].length;j++){
_array[i][j] = (_array[i][j] + _array[i][j+1] + _array[i+1][j] + _array[i+1][j+1]) / 4;
}
return this;
}
当 j+1 达到 3 时,我的代码在索引问题上返回错误,因为单元格是 0 1 2,所以它超出了界限。
例如,如果我有这样的矩阵
10 5 7 3
50 3 2 1
60 2 5 2
结果矩阵应该是这样的。
17 12 3 3
21 16 2 3
28 20 2 2
非常感谢您的时间和帮助。
【问题讨论】:
-
你写了你需要做的事,但这不是问题??
-
我该如何解决这个问题?
-
问题是你的 for 循环走得太远了,或者你没有检查你的界限。您自己已经说明了这一点-当 j+1 为 3 时,它会失败,因为单元格是 0、1、2。您必须阻止 j 上升到 2,否则您必须在单元格 j+1 结束时跳过添加单元格界限。
-
我不明白你是如何计算这些结果的。您能否解释一下,例如,如何将 [1][3] 处的数组元素从 230 变为 98?
-
您计算该单元格周围的所有单元格,包括其自身,然后除以单元格数以获得平均值,然后将该平均值放回该单元格中。