【发布时间】:2017-10-12 17:09:27
【问题描述】:
我正在用 Java 编写井字游戏,我不确定是否有更快/更简单的方法来检查获胜者。
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,因此不会产生太大的影响
【问题讨论】:
-
“减少 2/3” 很多,我们是否值得。应该使用循环的主要好处和原因是 DRY:不要重复自己。您实际上举了一个很好的例子:您有一个错字:“wiMMer 是:”。现在您必须更改 8 行而不是仅更改 1 行。简化代码将使更改内容变得更加容易,无论是纠正错误还是更改某些行为。
-
^ 这应该是公认的答案。
-
@Sentry 你是对的,我已经更改了我的代码