0

Javaの「Game of Life」アプリケーションを構築していて、インデックスが境界を越えているときに問題を検出しています。以下のコードは、ここからの別の質問。インデックスが2次元配列のOutOfBoundsであるかどうかを確認する

2D配列:

1,1,1,1 
1,1,1,1 
1,1,1,1 
1,1,1,1 

コード

private void traverse() {  
     for (int i = 0; i < brickArray.length; i++) { 
      for (int j = 0; j < brickArray[i].length; j++) { 

       System.out.println(i - 1 + "," + j); 
       checkIfAllowed(i - 1, j); 

      } 
     } 
    } 

    public void checkIfAllowed(int row, int column) { 
    boolean incorrect = check(row) && check(column); 
    if (incorrect) { 
     System.out.println("Wall"); 
    } else { 
     System.out.println("Road"); 

    } 
} 

private boolean check(int index) { 
    return (index < 0 || index > board.getHeight()); 
} 

結果:

トラバース:

-1,0 
Road 
-1,1 
Road 
-1,2 
Road 
-1,3 
Road 
0,0 
Road 
0,1 
Road 
0,2 
Road 
0,3 
Road 
1,0 
Road 
1,1 
Road 
1,2 
Road 
1,3 
Road 
2,0 
Road 
2,1 
Road 
2,2 
Road 
2,3 
Road 

この例では、4つの上部セルに「壁」が印刷されていても、上端には表示されませんでした。

+0

この場合checkは**正しい**の代わりに**間違った**を意味するようです** –

+0

return(index <1 || index> board.getHeight()); 'あなたは' 0'が'1'より小さい、そう? – bradimus

+0

'board'とそのメソッド' getHeight() 'はどこで定義されていますか? – Dez

答えて

0

負の名前のピットフォール、ニュートラルの名前(check)。

boolean incorrect = check(row) || check(column); 

行または列のいずれかが正しくない場合、座標全体が正しくありません。

私はここでcheckと書いています。また、ボードはgetHeightを使って正方形でなければなりません。

関連する問題