我正在用Java编写一个tic tac toe游戏,我不确定是否有更快/更简单的方法来检查获胜者。
if ( boardArray[0][0] == boardArray[0][1] && boardArray[0][0] == boardArray[0][2]) {
System.out.println("The wimmer is: " + boardArray[0][0]);
} else if ( boardArray[1][0] == boardArray[1][1] && boardArray[1][0] == boardArray[1][2]) {
System.out.println("The wimmer is: " + boardArray[1][0]);
} else if ( boardArray[2][0] == boardArray[2][1] && boardArray[2][0] == boardArray[2][2]) {
System.out.println("The wimmer is: " + boardArray[2][0]);
} else if ( boardArray[0][0] == boardArray[1][0] && boardArray[0][0] == boardArray[2][0]) {
System.out.println("The wimmer is: " + boardArray[0][0]);
}else if ( boardArray[0][1] == boardArray[1][1] && boardArray[0][1] == boardArray[2][1]) {
System.out.println("The wimmer is: " + boardArray[0][1]);
} else if ( boardArray[0][2] == boardArray[1][2] && boardArray[0][2] == boardArray[2][2]) {
System.out.println("The wimmer is: " + boardArray[0][2]);
} else if ( boardArray[0][0] == boardArray[1][1] && boardArray[0][0] == boardArray[2][2]) {
System.out.println("The wimmer is: " + boardArray[0][0]);
} else if ( boardArray[0][2] == boardArray[1][1] && boardArray[0][2] == boardArray[2][0]) {
System.out.println("The wimmer is: " + boardArray[1][1]);
} else {
System.out.println("ITS A DRAW");
}
我知道我可以使用for循环遍历不同的索引,但这只会将代码行减少大约2/3,因此不会产生巨大的差异
答案 0 :(得分:2)
我知道我可以使用for循环遍历不同的索引,但这只会将代码行减少大约2/3,因此不会产生巨大的差异。
您可以继续使用循环来改进代码,因为它不仅减少了代码行数,还为您带来了很多好处。它改善了你的:
<强>可维护性强>
要编辑代码,您只需编辑一次而不是编辑n次,其中n是它应该经历的迭代次数。
<强>可扩展性强>
这可能不是一个好例子,但想象一下你想把电路板改成4 x 4.对于循环,你可能只需要更新电路板尺寸。所有其他代码几乎都可以不受影响。
<强>可读性强>
代码的一个实例比多个重复的行更容易阅读。
减少拼写错误的可能性
代码较少,印刷错误的可能性较小。
使调试更容易
由于可读性提高,错误查找和调试实际上会更容易。
答案 1 :(得分:0)
前6个部分你不必通过else else语句。你可以使用循环。它将使您的代码紧凑。
public static void check(int[][] boardArray) {
for (int i = 0; i < 3; i++) {
if (boardArray[i][0] == boardArray[i][1] && boardArray[i][0] == boardArray[i][2]) {
System.out.println("The winner is: " + boardArray[i][0]);
return;
} else if (boardArray[0][i] == boardArray[1][i] && boardArray[0][i] == boardArray[2][i]) {
System.out.printf("The winner is: " + boardArray[0][i]);
return;
}
}
if (boardArray[0][0] == boardArray[1][1] && boardArray[0][0] == boardArray[2][2]) {
System.out.println("The winner is: " + boardArray[0][0]);
} else if (boardArray[0][2] == boardArray[1][1] && boardArray[0][2] == boardArray[2][0]) {
System.out.println("The winner is: " + boardArray[1][1]);
} else {
System.out.println("ITS A DRAW");
}
}