简化条件运算符

时间:2015-09-02 20:30:55

标签: java

我的朋友在他的编程课中编写了这个代码:

public class test {
   public static void main(String args[]) {
      double x = 0.9;
      double y = 0.1;
      boolean truth = x < 1 && x > 0 && y < 1 && y > 0;
      System.out.println(truth);
   }
}

我想知道(对我自己)是否有办法在这一行中简化条件运算符:

boolean truth = x < 1 && x > 0 && y < 1 && y > 0;

4 个答案:

答案 0 :(得分:14)

单线的唯一选择是使用括号。就个人而言,我更喜欢多个陈述,以使事情更加清晰:

boolean isXInRange = x > 0 && x < 1;
boolean isYInRange = y > 0 && y < 1;
boolean truth = isXInRange && isYInRange;

答案 1 :(得分:2)

不,但可能更明确(意见):

boolean truth = (0 < x && x < 1 && 0 < y && y < 1);

零检查的翻转使其易于阅读0 < x < 1。那更清楚了吗?一点点。

括号是一种风格选择。由于布尔表达式总是在if语句和while循环中用括号括起来,我发现总是用括号括起布尔运算符更清楚。

答案 2 :(得分:0)

我对Java的建议:

public boolean betweenExclusive(double start, double end, double val) {
    return val > start && val < end;
}

然后:

boolean truth = betweenExclusive(0, 1, x) && betweenExclusive(0, 1, y);

或者有点发烧友;)

boolean truth = Stream.of(x, y).allMatch(x => betweenExclusive(0, 1, x));

答案 3 :(得分:-3)

我只是在这里结合了两个答案(@Andreas和@Justin Niessner),所以真正的功劳归于他们。

boolean isXInRange = 0 < x && x < 1;
boolean isYInRange = 0 < y && y < 1;
boolean truth = isXInRange && isYInRange;

希望这有帮助!