我想从一个对象中计数4个布尔值,然后返回一个数为true的计数

时间:2019-05-19 12:48:47

标签: java boolean logic

我有一个User对象,该对象具有布尔值workOut1,workOut2,workOut3,workOut4 我想创建一个方法以返回计数为真的数量。 例子

Workout1 = false
Workout2 = true
Workout3 = false
Workout4 = false 

将返回1。 任何帮助都将得到

3 个答案:

答案 0 :(得分:2)

即使仅对4个变量,将它们放入数组或列表中也是有意义的。
如果还有更多,则必须执行该操作,然后对数组进行迭代和求和,或者使用列表过滤。
现在,对于4个变量,您可以使用ternary operator

int counter = (Workout1 ? 1 : 0) + (Workout2 ? 1 : 0) + (Workout3 ? 1 : 0) + (Workout4 ? 1 : 0);

虽然不优雅。

答案 1 :(得分:1)

您可以执行以下操作:

long numberOfTrues = Stream.of(workout1, workout2, workout3, workout4)
                .filter(w->w)
                .count();

答案 2 :(得分:0)

将所有内容放入数组中,然后创建一个新方法来遍历数组。该方法将检查数组中的每个布尔值,并检查其是否为true。如果为true,则int x将增加1。一旦循环完成,它将返回x的值。希望对您有帮助!

public static void main(String[] args) {


        Boolean[] test = new Boolean[4];

        boolean Workout1 = false;
        boolean Workout2 = true;
        boolean Workout3 = false;
        boolean Workout4 = false;

        test[0] = Workout1;
        test[1] = Workout2;
        test[2] = Workout3;
        test[3] = Workout4;


        System.out.println(check(test));


    }

    public static int check(Boolean[] array) {
        int x = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i].equals(true)) {
                x++;
            }

        }
        return x;
    }