我的朋友在他的编程课中编写了这个代码:
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;
答案 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;
希望这有帮助!