我正在研究一个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);
}
关于如何更好地处理这个问题的任何提示?
答案 0 :(得分:1)
你的问题不是你的想法。要比较String
,您需要使用其内置的equals()
方法:ui.equals("Y")
。使用==
进行比较将始终返回false。有关详细信息,请参阅How do I compare strings in Java?。
此外,您还需要翻转done = true
和done = false
语句(如果用户说“是”则再次播放,它们尚未完成)。
最后,我建议您将keyboard.next()
来电更改为keyboard.nextLine()
,否则可能会遇到奇怪的问题,尤其是当用户输入包含空格的输入时。
while
循环应该是while(!done)
而不是while(done)
。另外,我会摆脱你的do-while
循环,因为while
循环已经允许用户根据需要多次播放,所以这是不必要的。
答案 1 :(得分:-1)
U应该使用equals方法来比较if语句中的字符串值。 ui.equals( “是”)。