检查三个布尔中至少两个是否为真
一位访问员最近问我这个问题:给定三个布尔变量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);
}
它测试a
和b
准确一次,c
最多一次。
参考文献
- JLS 15.25条件运算符?:
以上是 检查三个布尔中至少两个是否为真 的全部内容, 来源链接: utcz.com/qa/401088.html