检查三个布尔中至少两个是否为真

一位访问员最近问我这个问题:给定三个布尔变量a,b和c,如果三个变量中至少有两个是true,则返回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);

}

它测试ab准确一次,c最多一次。

参考文献

  • JLS 15.25条件运算符?:

以上是 检查三个布尔中至少两个是否为真 的全部内容, 来源链接: utcz.com/qa/401088.html

回到顶部