所以我试图检查多个布尔值(6),并且如果超过一个,两个,三个等,则要执行不同的代码。
所以这是一个例子:
public static boolean x;
public static boolean y;
public static boolean z;
public static boolean a;
public static boolean b;
public static boolean c;
public static int amtTrue;
//if x & y are true, then set amtTrue to 1
//if y & z AND x & y are true, then set amtTrue to 2;
//keep iterating though all possiblilites
最有效的方法是什么?
谢谢你的时间!
答案 0 :(得分:4)
int i = 0;
for(boolean b : array)
if(b) i++;
switch(i){
case 0:
case 1:
case 2:
}
答案 1 :(得分:2)
只有六个布尔效率根本不重要,所以你可以集中精力制作最易读的解决方案。
一种方法是创建一个变量参数辅助方法,在循环中进行计数,如下所示:
public static int countTrue(boolean... x) {
int count = 0;
for (boolean b : x) {
if (b) {
count++;
}
}
return count;
}
您可以按照以下if
条件调用它,以获得易于阅读的解决方案:
if (countTrue(bool1, bool2, bool3, bool4, bool5, bool6) > 4) {
...
}