我正在搜索 1 和 0 的 2D数组。如果有一个相邻的3到0,则0转换为3.我已经想出如何搜索一行,但我希望相同的for循环重复,直到所有的0都已转换为3。提前寻求帮助。
这是一个视觉描绘。因此,如果我正在搜索第二行,我会发现第一行0触及一个3,但后来我想通过同一行找到下一个0触及3.我希望澄清! :)
1 1 1 1 1 3 1 1
1 0 1 1 0 0 1 1
1 1 1 1 0 1 1 1
等
我在索引为1的行上开始搜索,然后找到触及3的第一个0并将其转换为3.所以我有以下内容,然后我需要返回并重复该过程,直到剩余0为转换为3然后重复每一行:
1 1 1 1 1 3 1 1
1 0 1 1 0 3 1 1
1 1 1 1 0 1 1 1
public boolean searchRows(){
boolean found = false;
for (int c = 0; c < cave[rowIndex].length; c++){
if(cave[rowIndex][c]==0){
if (cave[rowIndex-1][c] == 3){
cave[rowIndex][c] = 3;
found=true;
}
else if(cave[rowIndex][c-1] == 3){
cave[rowIndex][c] = 3;}
else {found=false;}
}
}
return found;
}
答案 0 :(得分:0)
看起来你的for循环工作正常,可以通过一行。看起来您没有检查可能触及您当前正在查看的元素的所有可能元素。看起来你正在检查它上面的元素和它左边的元素。您应该检查您的问题所要求的其他方向。您还应该检查您是否要检查不存在的数组索引,这样您就不会收到ArrayIndexOutOfBounds错误。除此之外,请确保在实际找到零时将设置找到的布尔值,将其转换为3.目前,您只在一种情况下将found设置为true而不是另一种情况。