Я не могу понять, почему код продолжает печатать значение на единицу больше, чем мне нужно
Приходится писать код по задаче 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;
}
}