在java中搜索2D数组行

时间:2017-05-09 20:11:33

标签: java arrays

我正在搜索 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;
}

1 个答案:

答案 0 :(得分:0)

看起来你的for循环工作正常,可以通过一行。看起来您没有检查可能触及您当前正在查看的元素的所有可能元素。看起来你正在检查它上面的元素和它左边的元素。您应该检查您的问题所要求的其他方向。您还应该检查您是否要检查不存在的数组索引,这样您就不会收到ArrayIndexOutOfBounds错误。除此之外,请确保在实际找到零时将设置找到的布尔值,将其转换为3.目前,您只在一种情况下将found设置为true而不是另一种情况。