为什么我的程序没有停止?

Gru*_*mme 2 java java.util.scanner

任何人都可以告诉我,当我打y/n时 - 为什么我的比赛没有停止,它只会再次开始.我isDone()在跑步之前调用我的方法,但它只是一遍又一遍地运行.

public class Model {
    int numberToGuess = 29;
    int counter;
    boolean isDone;
    Scanner sc = new Scanner(System.in);

    public Model() {
        isDone = false;
        run();
    }

    public void run() {
        welcomeMessage();
        while (true) {
            guessNumber();
        }
    }

    public void welcomeMessage() {
        System.out.println("Welcome to " + '\n' + "***** GUESS THE NUMBER *****");
    }

    public void guessNumber() {
        System.out.println("Please enter number and hit 'Enter'" + '\n');
        if (sc.hasNextInt()) {
            int input = sc.nextInt();
            counter++;
            if (input < numberToGuess) {
                System.out.println('\n' + "Your guess is too low!" + '\n');
            } else if (input > numberToGuess) {
                System.out.println('\n' + "Your guess is too high!" + '\n');
            } else {
                System.out.println("Congratulations, you guessed the number!" + '\n' + "You guessed the number in " + counter + " guess." + '\n');
                isDone();
            }
        } else {
            System.out.println("Invalid input, please enter a number!" + '\n');
            sc.next();
        }
    }

    public void isDone() {
        System.out.println("Do you wanna play again? Enter y/n");
        if (sc.hasNext()) {
            String input = sc.next();
            if ("y".equals(sc))
                if (input.equals("y")) {
                    isDone = false;
                    guessNumber();
                } else if (input.equals("n")) {
                    isDone = true;
                }
        }
        System.out.println("Invalid input, please enter y/n to continue");
        sc.next();
    }
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*ren 8

你有一个无限循环:

 while (true)
Run Code Online (Sandbox Code Playgroud)

没有条件终止该计划.

您可以使用全局isDone变量并替换为true:

while (!isDone)
{
   guessNumber();
}
Run Code Online (Sandbox Code Playgroud)