Mọi thứ trong trò chơi đoán của tôi đều ổn, nhưng khi nó đến phần hỏi người dùng nếu họ muốn chơi lại, nó lặp lại câu hỏi hai lần. Tuy nhiên tôi phát hiện ra rằng nếu tôi thay đổi phương thức nhập từ nextLine() sang next(), nó không lặp lại câu hỏi. Tại sao vậy?Java .nextLine() lặp lại dòng
Dưới đây là các đầu vào và đầu ra:
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
Đây là mã: (Đó là trong Java) Các việc phải làm trước khi khối vòng lặp là phần mà nó yêu cầu người dùng nếu anh ta/cô ấy muốn chơi lại.
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);
}
}
}
Cố gắng không sử dụng 'do-while' ... Mọi người có xu hướng không sử dụng chúng vì chúng là loại bất thường. Ngoài ra, hãy thử bao gồm trong câu hỏi của bạn đầu vào của bạn và đầu ra được sản xuất. – carmenism
Bước qua trình gỡ rối cho bạn biết điều gì? – millimoose
Bạn có lặp lại trong tiêu đề của mình. – roippi