Java 递归遍历数组并计算像素

Java 递归遍历数组并计算像素,java,arrays,recursion,Java,Arrays,Recursion,我的任务是创建一个给定位置(intx,inty)的方法,它从该位置展开并查找数组中与原始位置颜色相同的所有像素。我应该递归地找到这个位置,但我不断地得到错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常异常:3 代码: public int sizeOfConnectedComponent(位置p){ if((行>像素.length | | cols>像素[0].length)| |(行

我的任务是创建一个给定位置(intx,inty)的方法,它从该位置展开并查找数组中与原始位置颜色相同的所有像素。我应该递归地找到这个位置,但我不断地得到错误:

线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常异常:3

代码:

public int sizeOfConnectedComponent(位置p){
if((行>像素.length | | cols>像素[0].length)| |(行<0 | | cols<0)){
返回0;
}如果(!像素[行][cols]| |访问[行][cols]){
返回0;
}否则{
访问[行][cols]=真;
sizeOfConnectedComponent((新位置(行-1,列));
SizeOffConnectedComponent((新位置(行+1,列));
sizeOfConnectedComponent((新位置(行,列-1));
SizeOffConnectedComponent((新位置(行,列+1));
{
if(已访问[行][cols]==true){
总计++;
}
}
}
返回总数;
}

如果(!pixels[rows][cols]| | visted[rows][cols])一行出现错误。你知道为什么会发生这种情况以及如何解决吗?

在你的代码中,有这样一行:

if ((rows > pixels.length || cols > pixels[0].length) || (rows < 0 || cols < 0))
因此,不是:

(rows > pixels.length || cols > pixels[0].length)
应该是:

(rows >= pixels.length || cols >= pixels[0].length)

此外,您也不会检查
行和
列是否超出您访问的
数组的范围。

像素[行][cols]是什么?它是2D矩阵中的一个变量还是一个布尔值?嗯,你用作索引的值似乎超过了数组大小。为什么你不使用变量p?由于您没有使用它,我不知道“行”和“列”如何在任何时候改变它们的值……我为我缺乏细节而道歉。每个像素都是布尔值。True是黑色像素,false是白色像素。为什么要从帖子中删除代码?这个问题现在没有足够的细节。
(rows > pixels.length || cols > pixels[0].length)
(rows >= pixels.length || cols >= pixels[0].length)