Java Can';当用户输入0时,无法了解如何处理退出do while循环

Java Can';当用户输入0时,无法了解如何处理退出do while循环,java,Java,我只是在做一个简单的猜谜游戏。如果用户输入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 {

我只是在做一个简单的猜谜游戏。如果用户输入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);
System.out.println(“系统将生成一个介于1和100之间的随机数。”
+“你的目标是猜这个数字。”);
做
{
Random secretNumberGen=新随机数();
int secretNumber=secretNumberGen.nextInt(100)+1;
System.out.println(“输入一个介于1和100之间的数字:”);
guess=scan.nextInt();
做
{
如果(猜测==秘密数字)
{
System.out.println(“你猜到数字了!”);
}
else if(猜测secretnumber)
{
System.out.println(“您的猜测太高了!再次猜测”);
numGuess++;
}
else if(猜测=0)
打破
System.out.println(“您的号码:\n”);
guess=scan.nextInt();
猜测++;
}
while(guess!=0&&guess!=secretNumber);
我猜我的while()循环中的条件可能不正确。我将它与以前的while(guess!=secretNumber);稍有更改。也许这样更好,我们应该以不同的方式对待输入0?
谢谢。

首先输入您的
猜测==0
条件。由于0小于任何生成的数字,它将首先输入该条件。

首先输入您的
猜测==0
条件。由于0小于任何生成的数字,它将首先输入该条件

如果这是他们输入的第一个数字,它会正确地退出,否则它只会随着猜测次数的增加而增加

这一行导致,据我所知,您的代码是不需要的:

guess++;
如果这是他们输入的第一个数字,它会正确地退出,否则它只会随着猜测次数的增加而增加

这一行导致,据我所知,您的代码是不需要的:

guess++;

问题在于,除了第一个猜测之外,您增加了所有猜测:

    System.out.println("Your number: \n");
    guess = scan.nextInt();
    guess++;

因此,他们需要输入
-1
来猜测0并结束循环。他们还需要输入一个小于
secretNumber
的值来获得正确的猜测….

问题是,除了第一个猜测之外,您增加了所有猜测:

    System.out.println("Your number: \n");
    guess = scan.nextInt();
    guess++;

因此,他们需要输入
-1
来猜测0并结束循环。他们还需要输入一个小于
secretNumber
的值来进行正确猜测……

为什么在最后一行的第二行需要guess+


删除guess++或将其注释掉,您应该会很好

为什么在最后一行的第二行需要guess++呢


删除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
System.out.println(“系统将生成一个介于1和100之间的随机数。”
+“你的目标是猜这个数字。”);
做
{
Random secretNumberGen=新随机数();
int secretNumber=secretNumberGen.nextInt(100)+1;
System.out.println(“输入一个介于1和100之间的数字:”);
guess=scan.nextInt();
做
{
//首先检查退出条件,以便控件不进入
//小于机密数的条件,该条件对于零始终为真
如果(猜测=0)
打破
//如果不是零,则猜测的数量将增加
numGuess++;
如果(猜测==秘密数字)
{
System.out.println(“你猜到数字了!”);
break;//如果是零或密码,则退出
}
else if(猜测secretnumber)
{
System.out.println(“您的猜测太高了!再次猜测”);
//将增量注释为已完成
//numGuess++;
}
System.out.println(“您的号码:\n”);
guess=scan.nextInt();
//guess++已被删除,因为我认为它没有任何用途。numGuess是维护计数的变量
}
while(true);//更改了此处的条件,因为退出条件已在循环中处理

这是您应该做的:-

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
System.out.println(“系统将生成一个介于1和100之间的随机数。”
+“你的目标是猜这个数字。”);
做
{
Random secretNumberGen=新随机数();
int secretNumber=secretNumberGen.nextInt(100)+1;
System.out.println(“输入一个介于1和100之间的数字:”);
guess=scan.nextInt();
做
{
//首先检查退出条件,以便控件不进入
//小于机密数的条件,该条件对于零始终为真
如果(猜测=0)
打破
//如果不是零,则猜测的数量将增加
numGuess++;
如果(猜测==秘密数字)
{
System.out.println(“你猜到数字了!”);
break;//如果是零或密码,则退出
}
else if(猜测secretnumber)
{
System.out.println(“您的猜测太高了!再次猜测”);
//将增量注释为已完成
//numGuess++;
}
System.out.println(“您的号码:\n”);
guess=scan.nextInt();
//guess++已被删除,因为我认为它没有任何用途。numGuess是维护计数的变量
}
while(true);//更改了此处的条件,因为退出条件已在循环中处理

哇。这很简单,非常有效。这是怎么回事?谢谢!哇。这很简单,非常有效。这是怎么回事?谢谢!