Все мои угадывающие игры в порядке, но когда дело доходит до того, что пользователь спрашивает, хочет ли он снова играть, он повторяет вопрос дважды. Однако я обнаружил, что если изменить метод ввода из nextLine() на next(), он не повторит вопрос. Почему это?Java .nextLine() повторяет строку
Здесь вход и выход:
I'm guessing a number between 1-10
What is your guess? 5
You were wrong. It was 3
Do you want to play again? (Y/N) Do you want to play again? (Y/N) n
Вот код: (Это в Java) Последнее делать в то время как блок цикла является та часть, где он запрашивает у пользователя, если он/она хочет играть снова.
import java.util.Scanner;
public class GuessingGame
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
boolean keepPlaying = true;
System.out.println("Welcome to the Guessing Game!");
while (keepPlaying) {
boolean validInput = true;
int guess, number;
String answer;
number = (int) (Math.random() * 10) + 1;
System.out.println("I'm guessing a number between 1-10");
System.out.print("What is your guess? ");
do {
validInput = true;
guess = input.nextInt();
if (guess < 1 || guess > 10) {
validInput = false;
System.out.print("That is not a valid input, " +
"guess again: ");
}
} while(!validInput);
if (guess == number)
System.out.println("You guessed correct!");
if (guess != number)
System.out.println("You were wrong. It was " + number);
do {
validInput = true;
System.out.print("Do you want to play again? (Y/N) ");
answer = input.nextLine();
if (answer.equalsIgnoreCase("y"))
keepPlaying = true;
else if (answer.equalsIgnoreCase("n"))
keepPlaying = false;
else
validInput = false;
} while (!validInput);
}
}
}
Старайтесь не использовать 'do-while' ... Люди склонны не использовать их, потому что они необычны. Кроме того, попробуйте включить в свой вопрос свой ввод и вывод, который производится. – carmenism
Что вам скажет отладчик? – millimoose
У вас есть повторение в вашем названии. – roippi