Как перебирать набор и складывать результаты каждый раз? - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь перебрать набор событий, получить время начала и окончания каждого события и рассчитать продолжительность каждого события. Затем мне нужно сложить все длительности, чтобы получить общее время. Код, который я использую, получает только продолжительность последнего события и не складывает их все вместе. Я не слишком уверен, что цикл, который я использую, правильный?

Set<Event> events = eventService.findByUsers(user);
Long duration = null;

for(Event event : events)
{
    LocalTime startTime = event.getStart().toLocalTime();
    LocalTime endTime = event.getEnd().toLocalTime();

    duration = Duration.between(startTime, endTime).toHours();
    System.out.println("The time bewtween shifts is " + duration);

   Long totalTime = duration += duration;

}

Любая помощь будет оценена

1 Ответ

3 голосов
/ 09 мая 2019

Переместите объявление переменной totalTime вне цикла:

Set<Event> events = eventService.findByUsers(user);
long totalTime = 0;
for(Event event : events)
{
   LocalTime startTime = event.getStart().toLocalTime();
   LocalTime endTime = event.getEnd().toLocalTime();

   long duration = Duration.between(startTime, endTime).toHours();
   System.out.println("The time bewtween shifts is " + duration);

   totalTime += duration;
}

При вашем текущем подходе переменная totalTime инициализируется снова при каждой итерации, следовательно, будет содержать только последнюю длительность вконец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...