Как вычислить сумму значений, хранящихся в getter?

#java #sum

#java #сумма

Вопрос:

Я хочу иметь возможность вычислять сумму значений int, хранящихся в моем методе getter. Итак, по сути, я хочу, чтобы программа суммировала общее количество часов всех работников в одно число. Я понятия не имею, как это сделать…

Результат, который я получаю с помощью этого кода, — это просто часы для всех работников, но не рассчитанные в одну сумму.

 for(Employee employee : emloyeeArr) {
  if(employee != null) {                
    System.out.println("Total hours for all the employees:"   
          employee.getEmployeeHours());
  }
}
  

Комментарии:

1. Определите переменную для хранения текущего количества часов, добавьте часы для каждого сотрудника в цикле. Выведите переменную после цикла.

2. Я предлагаю отступить назад и решить более простую, связанную с этим проблему: если у вас есть массив чисел, как вы выводите общее количество этих чисел?

3. Это может помочь вам: examples.javacodegeeks.com/java-basics/for-loop /…

4. спасибо за ваш ответ! я очень новичок в этом, может быть, вы можете показать мне пример того, что вы имеете в виду?

5. Кроме того, getter ничего не «хранит». Скорее это просто возвращает значение.

Ответ №1:

 float total_Hours = 0;
for(Employee employee : emloyeeArr) {
 if(employee != null) 
 {
  total_Hours  = employee.getEmployeeHours();                      
 }
 System.out.println("Total hours for all the employees:"   
  total_Hours);
  

Все, что вам нужно сделать, это запустить цикл for, получить каждый час сотрудника и добавить его в итог, а затем отобразить переменную total_Hours.

Комментарии:

1. попробовал его, но теперь выход я получаю это так: общее количество часов для всех работников:0 сумма часов за весь человек:5 общее число часов по всем сотрудникам:54 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех работников:84 всего часов для всех сотрудников:84 всего часов для всех работников:84 всего часов для всех сотрудников:84 …

2. сумма 84 верна, но как мне помешать ей делать так много выходных данных?

3. я понял, что для этого просто нужна пара дополнительных скобок, спасибо за помощь!!

Ответ №2:

Вы могли бы перебирать сотрудников и суммировать часы самостоятельно:

 long sum = 0L;
for (Employee employee : emloyeeArr) {
    if(employee != null) {
        sum  = employee.getEmployeeHours());
    }
}
  

Или, что более удобно, с потоком:

 long sum = Arrays.stream(emloyeeArr)
                 .filter(Objects::notNull)
                 .mapToInt(Employee:getEmployeeHours)
                 .sum();