我有一个tic tac toe board,在我可以检查胜利条件之前,我检查存储在board [] []的一组中的对象是否为空。
例如:
if(board[0][j] == null || board[1][j] == null || board[2][j] == null)//and so on
//do something
else
//proceed with row evaluation
答案 0 :(得分:0)
没有一种好方法可以进一步浓缩这些。但是,如果您的主要问题是可读性,则可以将代码移动到私有帮助程序方法中,并为该方法指定一个名称,以表示您正在评估的条件。
E.g。
if (isVictoryCondition(...)) {
...
}
...
private boolean isVictoryCondition(...) { /* null check logic goes here */ }
您可以将此命名为checkForNull(...)
,或者您可以将其命名为更具描述性的内容,当您将这些值检查为空时,例如isVictoryCondition(...)
如果这表示胜利条件。
答案 1 :(得分:0)
在Board
类中添加一个方法,如:
public boolean hasAnyNull() {
boolean found = false;
for (int i = 0 ; !found && i < board.width ; i++) {
for (int j = 0; !found && j < board.height ; j++ {
if (board[i][j] == null) {
found = true;
}
}
}
return found;
}
并测试if (hasAnyNull()) {...}
。该方法在第一个null
处返回,与您的or
条件完全相同。
如果您愿意,该方法可以将电路板作为参数。