异常被抛出连接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
不断发生,我认为它是在第一线,但我似乎无法找到问题。
答
一些干净的代码
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
}
*我认为这是在第一行*:堆栈跟踪告诉你什么行抛出异常。不要猜测。阅读堆栈跟踪。然后使用您的调试器逐步执行代码,并观察变量的值。 –
那么根据堆栈跟踪它是第一行,但我说我觉得因为我找不到这个bug。 –
问题是x
samgak