Java 为什么我的do while循环不起作用?
当我编译时,尝试输入(y)来再次播放我的do-while不起作用,它将我带出循环。 导入java.util.ScannerJava 为什么我的do while循环不起作用?,java,Java,当我编译时,尝试输入(y)来再次播放我的do-while不起作用,它将我带出循环。 导入java.util.Scanner public class HiLo { public static void main(String[] args) { // Creating a play again variable String playAgain = ""; // Create Scanner object Scanner
public class HiLo {
public static void main(String[] args) {
// Creating a play again variable
String playAgain = "";
// Create Scanner object
Scanner scan = new Scanner(System.in);
// Create a random number for the user to guess
int theNumber = (int)(Math.random() * 100 + 1);
int guessNumber = 0;
do
{
System.out.println("Guess a number between 1 - 100: ");
while (guessNumber != theNumber)
{
guessNumber = scan.nextInt();
if (guessNumber > theNumber)
{
System.out.println("Sorry, try again too high!");
}
else if (guessNumber < theNumber)
{
System.out.println("Sorry, try again too low!");
}
else
{
System.out.println("Congrats, you got it!");
}
}
System.out.println("Would you like to play again (y/n)?");
playAgain = scan.next();
} while (playAgain.equalsIgnoreCase("y"));
System.out.println("Thank you for playing! Goodbye.");
scan.close();
}
}
公共类HiLo{
公共静态void main(字符串[]args){
//再次创建play变量
字符串“”再次播放;
//创建扫描仪对象
扫描仪扫描=新扫描仪(System.in);
//创建一个随机数供用户猜测
int theNumber=(int)(Math.random()*100+1);
整数=0;
做
{
System.out.println(“猜一个介于1-100之间的数字:”);
while(猜数!=数字)
{
guessNumber=scan.nextInt();
如果(猜测数字>数字)
{
System.out.println(“对不起,再试一次太高了!”);
}
else if(猜测数<数字)
{
System.out.println(“对不起,再试一次太低了!”);
}
其他的
{
System.out.println(“恭喜,你成功了!”);
}
}
System.out.println(“您想再次播放吗(y/n)”;
playreach=scan.next();
}while(playreach.equalsIgnoreCase(“y”));
System.out.println(“谢谢你玩!再见”);
scan.close();
}
}
如下更改代码:(只需更新循环中的变量)
publicstaticvoidmain(字符串[]args){
//再次创建play变量
字符串“”再次播放;
//创建扫描仪对象
扫描仪扫描=新扫描仪(System.in);
//创建一个随机数供用户猜测
整数=0;
整数=0;
做
{
//要添加的新行
数字=(int)(Math.random()*100+1);
猜数=0;
System.out.println(“猜一个介于1-100之间的数字:”);
while(猜数!=数字)
{
guessNumber=scan.nextInt();
如果(猜测数字>数字)
{
System.out.println(“对不起,再试一次太高了!”);
}
else if(猜测数<数字)
{
System.out.println(“对不起,再试一次太低了!”);
}
其他的
{
System.out.println(“恭喜,你成功了!”);
}
}
System.out.println(“您想再次播放吗(y/n)”;
playreach=scan.next();
}while(playreach.equalsIgnoreCase(“y”));
System.out.println(“谢谢你玩!再见”);
scan.close();
}
以下是在Jshell上执行的代码:
程序无法运行的原因是do while循环在到达“while”部分之前进行了一次迭代。在您的例子中,在用户正确猜测数字后,程序将成功完成循环。您的程序中断,因为在此之后,您要求用户输入“y”以无休止地继续,而不让他们猜数字。如果他们猜到一个数字,程序就会终止 当您键入
y
再次播放,并且do
循环重新开始后,guessNumber
和theNumber
的值是多少?他们还平等吗?如果是这样的话,为什么它不立即跳过循环呢?而且,如果你最终再次玩,那么猜测的随机数不应该是。。。。不同?您能提供在您的控制台中输入和输出的数据吗?
public static void main(String[] args) {
// Creating a play again variable
String playAgain = "";
// Create Scanner object
Scanner scan = new Scanner(System.in);
// Create a random number for the user to guess
int theNumber = 0;
int guessNumber = 0;
do
{
// new lines to be added
theNumber = (int)(Math.random() * 100 + 1);
guessNumber = 0;
System.out.println("Guess a number between 1 - 100: ");
while (guessNumber != theNumber)
{
guessNumber = scan.nextInt();
if (guessNumber > theNumber)
{
System.out.println("Sorry, try again too high!");
}
else if (guessNumber < theNumber)
{
System.out.println("Sorry, try again too low!");
}
else
{
System.out.println("Congrats, you got it!");
}
}
System.out.println("Would you like to play again (y/n)?");
playAgain = scan.next();
} while (playAgain.equalsIgnoreCase("y"));
System.out.println("Thank you for playing! Goodbye.");
scan.close();
}