检查二维数组中的边界

我正在尝试检查2D数组中每个元素的相邻值,但是当我到达数组的边或角落时,得到了IndexOutOfBoundsException。例如,如果我的数组是:

回答:

回答:

回答:

回答:

我知道8的所有邻居都是7,5和6,但是我的if陈述并没有正确检查界限。我为此的代码是:

 int numOfRows = imageArray.length;

int numOfColumns = imageArray[0].length;

for(int i = 0; i < numOfRows; i++)

for(int j = 0; j < numOfColumns; j++)

if((j+1) < numOfColumns-1)

if((i+1) < numOfRows-1)

if((j-1) > 0 )

if((i-1) > 0 )

if((i+1) < numOfColumns-1 && (j+1) < numOfRows-1)

if((i-1) >= 0 && (j-1) >= 0)

if((i+1) < numOfColumns-1 && (j-1) >= 0)

if((i-1) >= 0 && (j+1) < numOfRows-1)

我已经为此工作了一段时间,并经历了许多不同的技术来解决这个问题。任何帮助都会很棒。谢谢。

回答:

如果您试图获取所有相邻单元格并对其进行处理(例如添加它们),那么您需要进行某种边界检查,例如从中进行一些修改可能会起作用:

for (int i = 0; i < numOfRows; i++) {

for (int j = 0; j < numOfCols; j++) {

// check all bounds out of range:

int iMin = Math.max(0, i - 1);

int iMax = Math.min(numOfRows - 1, i + 1);

int jMin = Math.max(0, j - 1);

int jMax = Math.min(numOfCols - 1, j + 1);

// loop through the above numbers safely

for (int innerI = iMin; innerI <= iMax; innerI++) {

for (int innerJ = jMin; innerJ <= jMax; innerJ++) {

if (i != innerI && j != innerJ) {

// do what needs to be done

}

}

}

}

}

注意:代码尚未经过编译或测试,主要是为了向您展示可以做什么的想法,而不是复制粘贴的解决方案

以上是 检查二维数组中的边界 的全部内容, 来源链接: utcz.com/qa/409135.html

回到顶部