【发布时间】:2018-08-12 00:17:53
【问题描述】:
我的任务是创建一个给定位置 (int x, int y) 的方法,它从该位置扩展并查找数组中与原始位置具有相同颜色的所有像素。我应该递归地找到这个位置,但我不断收到错误:
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 3
代码:
public int sizeOfConnectedComponent(Position p) {
if ((rows > pixels.length || cols > pixels[0].length) || (rows < 0 || cols < 0)) {
return 0;
} else if (!pixels[rows][cols] || visited[rows][cols]) {
return 0;
} else {
visited[rows][cols] = true;
sizeOfConnectedComponent((new Position(rows - 1, cols)));
sizeOfConnectedComponent((new Position(rows + 1, cols)));
sizeOfConnectedComponent((new Position(rows, cols - 1)));
sizeOfConnectedComponent((new Position(rows, cols + 1)));
{
if (visited[rows][cols] == true){
total++;
}
}
}
return total;
}
错误发生在if (!pixels[rows][cols] || visited[rows][cols]) 行。任何想法为什么会发生这种情况以及如何解决它?
【问题讨论】:
-
什么是像素[行][列]?它是二维矩阵中的变量还是布尔值?
-
嗯,您用作索引的值似乎超出了数组大小。
-
怎么不使用变量p?而且由于您没有使用它,所以我看不到“行”和“列”如何随时更改其值...
-
我很抱歉我缺乏细节。每个像素都是一个布尔值。 True 为黑色像素,false 为白色像素。
-
你为什么从你的帖子中删除代码?这个问题现在没有足够的细节。