我有一个游戏,用户试图猜测一个介于1到10之间的数字(或者1到100,不管你怎么设置)。
我展示了一个叫 btnPlayAgain
当用户赢或输的时候,询问他们是否想再玩一次。我想在程序启动时隐藏那个按钮,在他们输赢时显示它。
我想设置一个让你猜的按钮( btnGuess
)当 btnPlayAgain
按钮不可见。但出于某种原因,这并没有发生。这个 btnPlayAgain
当用户看到“再次播放”按钮时,按钮仍然可见。
如果我尝试:
else {
btnGuess.setVisible(false);
txtGuess.setVisible(false);
message = guess + " is correct. Let's play again!";
btnPlayAgain.setVisible(true);
}
按钮 btnGuess
当用户猜对时不会隐藏。“猜测是正确的。我们再玩一次吧。”信息不会被打印到屏幕上。
这是我玩游戏的功能和它的支持功能:
public void checkGuess() {
btnPlayAgain.setVisible(false);
String guessText = txtGuess.getText();
txtGuess.setText("");// Empties the contents of the text field.
String message = "";
try {
int guess = Integer.parseInt(guessText);
if (numberOfTries == 0) {
btnGuess.setVisible(false);
txtGuess.setVisible(false);
message = "You Lost! A new game has begun and you have 8 guesses remaining.";
btnPlayAgain.setVisible(true);
}
else if (guess < theNumber) {
message = guess + " is too low. Try again. You have " + numberOfTries + " tries left!";
}
else if (guess > theNumber) {
message = guess + " is too high. Try again. You have " + numberOfTries + " tries left!";
}
else {
btnGuess.setVisible(false);
txtGuess.setVisible(false);
message = guess + " is correct. Let's play again!";
btnPlayAgain.setVisible(true);
}
} catch (Exception e) {
message = "Enter a whole number between 1 and 10.";
} finally {
lblOutput.setText(message);
txtGuess.requestFocus();
txtGuess.selectAll();
}
decrementNumberOfTries();
}
public void newGame() {
numberOfTries = 8;
theNumber = (int) (Math.random() * 10 + 1);
}
public void decrementNumberOfTries() {
--numberOfTries;
}
这是我所有代码的链接。
这就是你玩游戏的窗口:
我想藏起来 Guess!
按钮和文本字段,并显示 playAgain
按钮。这个 playAgain
按钮应该允许用户开始一个新的游戏。我该怎么做?
1条答案
按热度按时间tsm1rwdh1#
问题是你
btnGuess
构造函数中的局部变量,而不是设置字段,因此NullPointerException
当数字正确时抛出。既然你在抓Exception
,则程序假定输入的数字无效。接住NumberFormatException
而是为了避免在程序中遗漏错误。在构造函数中,更改
到
要正确重置游戏,您需要修改
newGame
方法仅显示适当的元素并重置输出标签的文本。