2016-10-27 56 views
-2

我正在開發一個java程序。現在一切都完全正常,我所有的功能都在那裏。但是,我堅持的部分是如何退出do-while循環中的程序。我必須得到錯誤的語法。在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); 
} 

我如何能處理好這個任何提示?

+4

您無法在Java中使用'=='來比較字符串,您需要使用.equals()方法。 –

+0

你不需要做'while(done == false)'用'while(done)'來重新設置' –

+0

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – John3136

回答

1

你的問題不是你認爲的問題。要比較String s,您需要使用其內置的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循環已經允許用戶多次播放他們想要的,所以這是不必要的。

+0

非常感謝你的回答!我根據你的建議更新了它。但是,這仍然不會讓我退出,並且一直循環回到System.out.println(「歡迎來到Hang子手!」);''do'塊的開始處。關於如何退出循環和程序的任何提示? –

+0

@JamesN你是否翻轉了'done = true'和'done = false'?我注意到你的問題,你把'=='改成了'.equals()',但沒有修復那些。 – mapeters

+0

是的,我做到了。我重新調整了編輯。我仍然有同樣的問題 –

-1

U應該使用equals方法比較if語句中的字符串值。 ui.equals( 「是」)。