2016-11-25 18 views
0

私は、接続4が垂直かどうかを調べるために、自分のコードで問題を抱えています。私のコードへの序文:ボードは6行7列があり、変数player1はチップとして使用されている文字の値を保持し、playerIDだけで接続4.接続4アルゴリズムの例外がスローされました

public int verticalWin() { 
    int playerID = 0; 

    for (int x = 0; x < board[x].length; x++) { 
     int count = 1; 
     for (int y = board.length-2; y >= 0; y--) { 
      if (board[y][x] == board[y+1][x]) { 
       count++; 
       if (count == 4) { 
        if (board[y][x] == player1) { 
         playerID = 1; 
        } else { 
         playerID = 2; 
        } 
       } 
      } else { 
       count = 1; 
      } 
     } 
    } 
    return playerID; 
} 

問題を取得し、誰の値を保持しています私は例外的にjava.lang.ArrayIndexOutOfBoundsException: 6が起き続けていることに気付いています。それは最初の行にあると思いますが、問題を見つけることができません。

+1

:スタックトレースは、ラインがその例外がスローされます正確に何を説明します。推測しないでください。スタックトレースを読み込みます。次に、デバッガを使用してコードをステップバイステップで実行し、変数の値を確認します。 –

+0

スタックトレースによると最初の行ですが、私はバグを見つけることができないので、私は思っています。 –

+1

問題はx samgak

答えて

0

私はそれが最初の行*でだと思う*一部のクリーナーコード

boolean isWinnerOnColumn(int playerID, int column) { 
    int count = 0; 

    for (int row = 0; row < 6; row++) { 
     count = (board[row][column] == playerID) ? (count + 1) : 0; 
     if (count == 4){ 
      return true; 
     } 
    } 
    return false; 
} 

public int verticalWin() { 
    for (int column = 0; column < 7; column++) { 

     if (isWinnerOnColumn(1, column) { 
      return 1; 
     } 

     if (isWinnerOnColumn(2, column) { 
      return 2; 
     } 
    } 
    return 0; // no winner 
} 
関連する問題