最近一位面试官问了我这个问题:给定三个布尔变量 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;
}
Write:
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
and b
正好一次,并且c
最多一次。
参考
- JLS 15.25 条件运算符? : http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.25
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)