Я не могу понять, почему код продолжает печатать значение на единицу больше, чем мне нужно

Приходится писать код по задаче Volim в каттисе. Идея состоит в том, что существует игра в пустяки, в которой вы должны ввести количество секунд, которые потребовались человеку, чтобы ответить, и правильно ли он ответил и смогли ли передать его дальше. Требуемый выход - это тот, с кем был картофель, когда погаснет 210-секундный таймер. У меня есть код, работающий, кроме того факта, что вывод на единицу выше, чем мне нужно, чтобы он был успешным. Я думаю, что это проблема с увеличением переменной whoHasIt, но я не уверен.

import java.util.Scanner;
class Volim {
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    int seconds = 0;
    int whoHasIt = sc.nextInt();
    for (int questionCounter = sc.nextInt(); questionCounter > 0; questionCounter--) {
        int secondsTaken = sc.nextInt();
        char answer = sc.next().charAt(0);
        seconds = seconds + secondsTaken;
        if (answer == 'T') {
            whoHasIt++;
            if (whoHasIt == 9) {
                whoHasIt = 1;
                if (seconds >= 210) {
                    break;
                }
            }
        }
    }
    System.out.println(whoHasIt);
}

}

Один набор входных выборок: 1 5 20 T 50 T 80 T 50 T 30 T

что должно дать результат 5, но мой код продолжает давать мне 6

1 ответ

Вы правы в своем предположении, что whoHasIt увеличивается не в то время. Возможно, вы даже не захотите спрашивать ответ, если таймер истек.

    if (seconds >= 210) {
        break;
    }
    char answer = sc.next().charAt(0);
    if (answer == 'T') {
        whoHasIt++;
        if (whoHasIt == 9) {
            whoHasIt = 1;
        }
    }
Другие вопросы по тегам