异常被抛出连接4算法

问题描述:

因此,我一直遇到问题与我的代码检查是否有垂直连接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

那么根据堆栈跟踪它是第一行,但我说我觉得因为我找不到这个bug。 –

+1

问题是x samgak

一些干净的代码

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 
}