Я хочу посчитать 4 логических значения от объекта и вернуть количество истинных - PullRequest
0 голосов
/ 19 мая 2019

У меня есть объект User, который имеет логические значения workOut1, workOut2, workOut3, workOut4 Я хочу создать метод, который возвращает количество истинных. Пример

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

вернул бы 1. Любая помощь будет оценена

Ответы [ 3 ]

2 голосов
/ 19 мая 2019

Даже для 4 переменных имеет смысл поместить их в массив или список.Если их больше, вы должны сделать это и выполнить итерацию и суммирование по массиву или использовать фильтрацию списка.Теперь для 4 переменных вы можете использовать троичный оператор :

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

Не элегантно.

1 голос
/ 19 мая 2019

Вы можете сделать что-то вроде этого:

long numberOfTrues = Stream.of(workout1, workout2, workout3, workout4)
                .filter(w->w)
                .count();
0 голосов
/ 19 мая 2019

Поместите все в массив, а затем создайте новый метод для перебора массива.Метод проверит каждое логическое значение внутри массива и проверит, верно ли оно.Если это правда, тогда 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;
    }
...