在 java 中搜索二维数组行



我正在搜索一个有 102D 数组。如果有一个相邻的 3 到 0,则 0 将转换为 3。我已经想出了如何搜索一行一次,但我希望重复相同的 for 循环,直到所有 0 都转换为 3。提前感谢您的帮助。

这是一个视觉描述。因此,如果我搜索第 2 行,我会发现第一个 0 触及 3,但随后我想穿过同一行并找到下一个接触 3 的 0。我希望澄清!:)

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 的行开始搜索,找到第一个接触 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;
}

似乎您的 for 循环工作正常,可以穿过一行。看起来您没有检查可能触及您当前正在查看的元素的所有可能元素。看起来您正在检查其正上方的元素和其左侧的元素。您还应该检查问题要求的任何其他方向。您还应该检查是否要检查不存在的数组索引,以免收到 ArrayIndexOutOfBounds 错误。除此之外,请确保您在实际找到一个将变成 3 的零时设置找到的布尔值。目前,您仅在一种情况下将找到设置为 true,而不是在另一种情况下。

最新更新