java – 检查三个布尔值中至少有两个是真的
作者:互联网
一位采访者最近问我这个问题:给定三个布尔变量a,b和c,如果三个中至少有两个为真,则返回true.
我的解决方案是:
boolean atLeastTwo(boolean a, boolean b, boolean c) {
if ((a && b) || (b && c) || (a && c)) {
return true;
}
else{
return false;
}
}
他说这可以进一步改善,但如何?
解决方法:
而不是写:
if (someExpression) {
return true;
} else {
return false;
}
写:
return someExpression;
至于表达本身,这样的事情:
boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a ? (b || c) : (b && c);
}
或者这个(无论你发现哪个更容易掌握):
boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a && (b || c) || (b && c);
}
它只测试a和b一次,最多c次测试一次.
参考
> JLS 15.25 Conditional Operator ? :
标签:java,boolean,boolean-logic 来源: https://codeday.me/bug/20190918/1811412.html