Check if at least two out of three booleans are true(检查三个布尔值中的至少两个是否为真)
问题描述
一位面试官最近问我这个问题:给定三个布尔变量 a、b 和 c,如果三个中至少有两个为真,则返回真.
An interviewer recently asked me this question: given three boolean variables, a, b, and c, return true if at least two out of the three are true.
我的解决方案如下:
boolean atLeastTwo(boolean a, boolean b, boolean c) {
if ((a && b) || (b && c) || (a && c)) {
return true;
}
else{
return false;
}
}
他说这可以进一步改进,但是如何呢?
He said that this can be improved further, but how?
推荐答案
而不是写:
if (someExpression) {
return true;
} else {
return false;
}
写:
return someExpression;
<小时>
至于表达式本身,是这样的:
As for the expression itself, something like this:
boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a ? (b || c) : (b && c);
}
或者这个(你觉得更容易掌握的那个):
or this (whichever you find easier to grasp):
boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a && (b || c) || (b && c);
}
a
和 b
只测试一次,c
最多测试一次.
It tests a
and b
exactly once, and c
at most once.
- JLS 15.25 条件运算符?:
这篇关于检查三个布尔值中的至少两个是否为真的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:检查三个布尔值中的至少两个是否为真
基础教程推荐
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01