如何压缩由OR运算符组成的if语句?

时间:2015-02-24 17:38:25

标签: java if-statement

我有一个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

2 个答案:

答案 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条件完全相同。

如果您愿意,该方法可以将电路板作为参数。