[英]How to exit a do-while loop using a Scanner in Java when the user enters the word “exit”?
[英]Can't figure out how to handle quitting do-while loop when user enters 0
我只是在做一个简单的猜谜游戏。 如果用户输入0,我需要执行do-while循环才能退出。按它的方式,如果这是他们输入的第一个数字,则它会正确退出,否则,它会随着猜测数的总和而递增。 这是我的代码:
System.out.println("The system will generate a random number between 1 and 100."
+ " Your goal is to guess this number.");
do
{
Random secretNumberGen = new Random();
int secretNumber = secretNumberGen.nextInt(100)+1;
System.out.println("Enter a number between 1 and 100: ");
guess = scan.nextInt();
do
{
if(guess==secretNumber)
{
System.out.println("You guessed the number!");
}
else if(guess<secretNumber)
{
System.out.println("Your guess is too low! Guess again");
numGuess++;
}
else if(guess>secretNumber)
{
System.out.println("Your guess is too high! Guess again");
numGuess++;
}
else if(guess==0)
break;
System.out.println("Your number: \n");
guess = scan.nextInt();
guess++;
}
while(guess!=0&&guess!=secretNumber);
我猜测while()循环中的条件可能不正确。 我从以前的那段时间(guess!= secretNumber)稍作更改。 。 也许现在更好,我们应该以其他方式输入0? 谢谢。
问题是您增加了除第一个猜测以外的所有猜测:
System.out.println("Your number: \n");
guess = scan.nextInt();
guess++;
因此,他们需要输入-1
才能猜测为0并结束循环。 他们还需要输入比secretNumber
小一的secretNumber
以进行正确的猜测。
为什么您需要在最后第二行使用guess ++?
删除猜测++或将其注释掉,您应该会没事的
首先将您的guess == 0
条件。 由于0小于任何生成的数字,它将首先进入该条件。
如果这是他们输入的第一个数字,它会正确退出,否则它将作为猜测总数的总和而增加
此行导致这一点,据我了解,不需要您的代码:
guess++;
这是您应该做的:
System.out.println("The system will generate a random number between 1 and 100."
+ " Your goal is to guess this number.");
do
{
Random secretNumberGen = new Random();
int secretNumber = secretNumberGen.nextInt(100)+1;
System.out.println("Enter a number between 1 and 100: ");
guess = scan.nextInt();
do
{
// Exit condition is being checked first so that control does not enter
// the less-than-secret-number-condition which would always be true for zero
if(guess==0)
break;
// If its not zero, num of guesses is to be incremented
numGuess++;
if(guess==secretNumber)
{
System.out.println("You guessed the number!");
break; // Exits if it is zero or the secret number
}
else if(guess<secretNumber)
{
System.out.println("Your guess is too low! Guess again");
// Commenting out the increment as its already done
// numGuess++;
}
else if(guess>secretNumber)
{
System.out.println("Your guess is too high! Guess again");
// Commenting out the increment as its already done
// numGuess++;
}
System.out.println("Your number: \n");
guess = scan.nextInt();
// guess++ has been removed as I think it serves no purpose. numGuess is the variable maintaining the count
}
while(true); // Changed the condition here as the exit conditions have already bee dealt with within the loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.