gpt4 book ai didi

java - boolean 值不会WHILE循环java编程

转载 作者:行者123 更新时间:2023-11-30 11:01:35 25 4
gpt4 key购买 nike

我遇到了一个我还没有遇到的问题。我用 Java 编写了一个猜谜游戏来猜测 1 到 1000 之间的数字。程序应该循环直到玩家决定他或她不再想玩为止。但是我无法让它循环。如果我取出程序底部的 Scanner 类,它会很好地循环,但我需要扫描器类来完成我类(class)要求的程序。如果用户在扫描器类中键入“no”,while 循环变量将设置为 false,程序将正常终止。但是如果用户选择"is"并且 while 循环变量保持为真,我就无法让它循环。输入“yes”后,程序就暂停了,什么也没有发生,程序也没有结束。任何帮助将不胜感激。

import javax.swing.*;
import java.util.*;
public class RandomGuess3
{
public static void main(String[] args)
{
String userGuess;
String playAgain;
int guessNum;
int randomNum = (1+(int)(Math.random()*1000));
int guessCount = 0;
boolean correct = false;
boolean startGame = true;
boolean newGame = false;

if(launchGame() == true)
startGame = true;
while(startGame == true)
{
do
{
userGuess = JOptionPane.showInputDialog(null,
"I'm thinking of a number between 1 and 1000."
+"\nEnter your guess:", "Guessing Game",
JOptionPane.QUESTION_MESSAGE);
guessNum = Integer.parseInt(userGuess);
if(guessNum != randomNum)
if(guessNum < randomNum)
JOptionPane.showMessageDialog(null, "Sorry you guessed too low");
else
JOptionPane.showMessageDialog(null, "Sorry you guessed too high");
if(guessNum == randomNum)
correct = true;

++guessCount;
}while(guessNum != randomNum);

if(correct == true)
JOptionPane.showMessageDialog(null, "CONGRATULATIONS!"
+"\nYou guessed correctly!"
+"\nAnd it only took "+guessCount+" tries.");

Scanner input = new Scanner(System.in);
System.out.print("Want to play again? Enter yes or no >> ");
playAgain = input.nextLine().toUpperCase();

if(playAgain.equals("NO"))
startGame = false;
else
startGame = true;
}

}
public static boolean launchGame()
{
int letsPlay;
boolean startGame;
letsPlay = JOptionPane.showConfirmDialog(null,
"Want to play a guessing game?");
startGame = (letsPlay == JOptionPane.YES_OPTION);
System.out.println("startGame is "+startGame);
return startGame;
}

}

最佳答案

你可以去掉

if(launchGame() == true)
startGame = true;

完全,也许使用这个:

boolean startGame = launchGame();             
while(startGame)
{
do
{
userGuess = JOptionPane.showInputDialog(null,
"I'm thinking of a number between 1 and 1000."
+"\nEnter your guess:", "Guessing Game",
JOptionPane.QUESTION_MESSAGE);
guessNum = Integer.parseInt(userGuess);

另一个潜在的结构改进可能是使用游戏的自然 if else 结构。 “如果猜错了,告诉他们更低或更高,否则告诉他们他们赢了并提议再次玩”这似乎真的是游戏应该做的。

此外,您的正确 boolean 值有点多余,因为要退出循环,正确必须为真,因此您无需再次检查是否正确。

所以:

                  if(guessNum < randomNum)
JOptionPane.showMessageDialog(null, "Sorry you guessed too low");
else
JOptionPane.showMessageDialog(null, "Sorry you guessed too high");
++guessCount;
}while(guessNum != randomNum);

JOptionPane.showMessageDialog(null, "CONGRATULATIONS!"
+"\nYou guessed correctly!"
+"\nAnd it only took "+guessCount+" tries.");

您可能要考虑的最后一件事,也是最基于偏好的事情,是您可能想要以不同方式检查是或否。通常当我看到这类检查时,通常会看到人们获取字符串响应的第一个字母,然后执行 charAt(0),如果 charAt(0) == 'y' 或 charAt(0) == 'Y ',然后再玩一次,否则你就没有了。如果您更喜欢这种方法,请深思。

关于java - boolean 值不会WHILE循环java编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com