检查真实的布尔值,并根据金额执行不同的操作

时间:2016-11-22 20:20:18

标签: java

所以我试图检查多个布尔值(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

最有效的方法是什么?

谢谢你的时间!

2 个答案:

答案 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) {
    ...
}

Demo.