在java中退出程序do-while循环

时间:2016-10-27 02:58:04

标签: java

我正在研究一个java程序。现在一切都完全正常,我的所有功能都在那里。但是,我坚持的部分是如何在do-while循环中退出程序。我必须得到错误的语法。

基本上,我设置了一个开关done,它对用户的输入作出反应。现在,它正在工作并循环执行程序,但如果我说“不”继续,它就不会退出。

这是正在发生的代码的一部分:

public void main() {
    String userInput;
    boolean done = true;
    Scanner keyboard = new Scanner(System.in);
    do {
        System.out.println("Welcome to Hangman!");
        System.out.println("Do you want to play?");
        userInput = keyboard.next();
        if (userInput.equals("Yes") || userInput.equals("yes") || userInput.equals("y") || userInput.equals("Y")) {
            done = false;
        } else if (userInput.equals("n") || userInput.equals("no") || userInput.equals("NO") || userInput.equals("No")) {
            done = true;
        }
        while (!done) {
          System.out.println(getDisguisedWord());   
          System.out.println("Guess a letter: ");
          String guess = keyboard.next();
          makeGuess(guess);
          if (gameOver()) {
              String ui;
              System.out.println("Do you want to play again?");
              ui = keyboard.next();
              if (ui.equals("Yes") || ui.equals("yes") || ui.equals("y") || ui.equals("Y")) {
                  done = false;
              } else {
                  done = true;
              }
          }
        }
    } while(done);
}

关于如何更好地处理这个问题的任何提示?

2 个答案:

答案 0 :(得分:1)

你的问题不是你的想法。要比较String,您需要使用其内置的equals()方法:ui.equals("Y")。使用==进行比较将始终返回false。有关详细信息,请参阅How do I compare strings in Java?

此外,您还需要翻转done = truedone = false语句(如果用户说“是”则再次播放,它们尚未完成)。

最后,我建议您将keyboard.next()来电更改为keyboard.nextLine(),否则可能会遇到奇怪的问题,尤其是当用户输入包含空格的输入时。

编辑:我注意到了一些问题。您while循环应该是while(!done)而不是while(done)。另外,我会摆脱你的do-while循环,因为while循环已经允许用户根据需要多次播放,所以这是不必要的。

答案 1 :(得分:-1)

U应该使用equals方法来比较if语句中的字符串值。 ui.equals( “是”)。