我遇到了一个我还没有遇到的问题。我用java写了一个猜谜游戏来猜1到1000之间的数字。程序应该循环,直到玩家决定不再玩为止。然而,我无法让它循环。如果我取出程序底部的Scanner类,它可以正常循环,但我需要Scanner类按照类中的要求完成程序。如果用户在scanner类中键入“no”,则while循环变量设置为false,程序将按其应该的方式终止。但是,如果用户选择“yes”并且while循环变量保持为true,则我无法使其循环。在输入“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结构。“如果猜错了,告诉他们低一点或高一点,否则告诉他们他们赢了,并提出再玩一次”这才是游戏真正应该做的。
此外,正确的布尔值有点多余,因为要退出循环,correct必须为true,因此无需再次检查是否正确。
所以:
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”,则再次播放,否则你会有一个no。如果你喜欢这种方法,请思考一下。
我对Java编码非常陌生,我已经研究这个问题大约4天了。我正在做一个选择你自己的结局故事。当我到达第69行时,如果读者选择是,我希望系统重新开始故事,如果他们选择否,则结束程序。我不确定我是否正确地编码了while循环,或者我甚至可以使用中断;操作员就像我在使用它一样。对不起,我的代码太难看了,哈哈,我正在努力变得更好。感谢您的建议! }
主要内容:while 语句,do-while 语句,while和do-while的比较循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。 所有流行的编程语言中都有循环语句。 Java 中采用的循环语句与C语言中的循环语句相似,主要有 while、do-while 和 for。另外 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的。for-ea
你已经初步了解C语言如何处理循环,但是你可能不是很清楚布尔表达式i < argc是什么。在学习while循环之前,让我先来对布尔表达式做一些解释。 在C语言中,实际上没有真正的“布尔”类型,而是用一个整数来代替,0代表false,其它值代表true。上一个练习中表达式i < argc实际上值为1或者0,并不像Python是显式的Ture或者False。这是C语言更接近计算机工作方式的另一个例子,因
每次我输入东西时,这段代码都会循环。如何修复它? 这是整个事情的截图:
问题内容: 我正在制作一个以这种方式执行的while循环程序: 主线程进入while循环。 在while循环中什么也没有发生。 线程将停留在while循环中,直到满足条件为止。 另一个线程运行一个满足上述条件的函数。 这是一个例子: 类中还有另一个函数会将路径设置为null,一旦发生这种情况,主线程应退出此循环。在另一个线程中调用另一个函数。 但是,即使将path设置为null,主线程也不会退出循
我想写一个程序,把每4位数字的每一位相加。例如,我从1000开始,加上1001,千变成2,百变成0,十变成0,单位变成1。这将持续增加每个数字,直到达到9999。这是我的代码,它只输出9999。