#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();