Я не могу понять, почему код продолжает печатать значение на единицу больше, чем мне нужно - PullRequest
0 голосов
/ 25 октября 2019

Я должен написать код, основанный на проблеме Volim в kattis. Идея состоит в том, что существует игра «Горячий картофель по пустякам», и вам нужно ввести количество секунд, на которое человек ответил, и ответили ли они правильно и смогли ли они пройти. Требуемый выход - тот, с кем был картофель, когда выключается таймер на 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 T50 T 30 T

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

1 Ответ

0 голосов
/ 26 октября 2019

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

    if (seconds >= 210) {
        break;
    }
    char answer = sc.next().charAt(0);
    if (answer == 'T') {
        whoHasIt++;
        if (whoHasIt == 9) {
            whoHasIt = 1;
        }
    }
...