У меня возникла проблема с проверкой ввода. Я написал программу, в которой два человека имитируют игру в кости. Фактический игровой код в порядке, но я просто не знаю, почему у меня бесконечный цикл, когда я снова пытаюсь запустить программу. В принципе, если пользователь вводит «Y», программа снова запустится, если они будут вводить «N», программа закончится, и если они поступят что-либо, кроме Y или N, появится приглашение: «Хотите снова сыграть?» Является ли следующий код правильным или мне нужно его немного изменить (в основном я имею в виду код проверки ввода)?Бесконечные петли при подтверждении ввода
do{
System.out.print("Would you like to play again? (Y/N): ");
String command = input.next();
if(input.hasNextLine()){
if(command.equals("Y") || command.equals("y")){
die1 = rand.nextInt(6) + 1;
die2 = rand.nextInt(6) + 1;
die3 = rand.nextInt(6) + 1;
die4 = rand.nextInt(6) + 1;
sum = die1 + die2;
sum2 = die3 + die4;
System.out.printf("%s rolled a %d and %d for a total of %d. %n", name1, die1, die2, sum);
System.out.printf("%s rolled a %d and %d for a total of %d. %n", name2, die3, die4, sum2);
if(sum > sum2){
System.out.println(name1 + " " + "won!");
}
else if (sum2 > sum){
System.out.println(name2 + " " + "won!");
}
else if (sum == sum2){
System.out.println(name1 + " " + "and" + " " + name2 + " " + "tied!");
}
game = input.nextLine();
}
else if(command.equals("N") || command.equals("n")){
System.exit(1);
}
}
}while(!validInput);
}
}
Edit: Я удалил весь код и просто вставить кусок кода, который был в вопрос, но это правильно ... Еще раз спасибо!
'if (input.equals (YES) || input.equals (YES2)) {' никогда не будет 'истинным', потому что' input' является 'Scanner', вам нужно вызвать' nextLine' и сохранить его где-нибудь. –
Есть ли способ вокруг него? –
сначала после вопроса, напишите 'String command = input.next()' и измените 'if (input.equals (YES) || input.equals (YES2))', 'if (command.equals (" y ") || command.equals ("Y")) ' – MaxG