【问题标题】:Nested while loop won't ask to run program again correctly嵌套的while循环不会要求再次正确运行程序
【发布时间】:2019-04-05 00:49:32
【问题描述】:

嗯,我有这个硬件问题,我必须只使用嵌套的 while 循环,根本不使用 do while。所以基本上我已经把代码写下来了,但它不会运行循环的一部分,它一直说是或否。应该是这样的

猜猜密码。

输入密码的最大值:10

已选择一个新的密码。

输入猜测:3

太低了;再试一次。

输入猜测:8

太低了;再试一次。

输入猜测:9

太低了;再试一次。

输入猜测:10

你在 4 次猜测中获胜!

再玩一次? (是/否)是的

选择了一个新的密码。

输入猜测:7

太高了;再试一次。

输入猜测:3 太低;再试一次。

输入猜测:5

你在 3 次猜测中获胜!

再玩一次? (是/否)n

 public static void main(String arg[])
{
    int guess = 0,max,guesses = 0;
    String response;
    Scanner input= new Scanner(System.in);
    System.out.println("Guess the secret number\n");
    System.out.println("Enter maximum value for secret number: ");
    max=input.nextInt();
    int numbers=(int) (Math.random()* max) + 1;
    while(true) 
    {
        System.out.println("A new secret number has been chosen.");

        while (guess!=numbers)
        {
            System.out.println("Enter guess");
            guess=input.nextInt();
            guesses++;

            if (guess<numbers)
            {
                System.out.println("Two low; Try again ");
            }
            else if (guess>numbers)
            {
                System.out.println("To high; Try again");
            }

        }
        System.out.println("You won in " + guesses + "!"); 
        System.out.print("\nPlay again? (Y/N)"); 
        response = input.next(); 
        if(response.equalsIgnoreCase("y"))
        {
            continue; 
        }
        else
        {
            break;
        }

    }
    input.close();
}

(这是我得到的)

输入密码的最大值: 5

已选择一个新的密码。

输入猜测 4

到高;再试一次

输入猜测 3

你赢了 2 场!

再玩一次? (Y/N)y

已选择一个新的密码。

你赢了 2 场!

再玩一次? (Y/N)y

已选择一个新的密码。

你赢了 2 场!

再玩一次? (是/否)

(因此循环不会再次调用猜测)

【问题讨论】:

    标签: java output nested-loops


    【解决方案1】:

    您需要重新初始化 guessnumbers 才能开始新一轮游戏。

    将这两行向下移动到外部 while 循环内:

    int numbers=(int) (Math.random()* max) + 1;
    int guess = 0, guesses = 0;
    

    【讨论】:

      【解决方案2】:

      您已经很接近了,但您需要在每次获胜后重新设置您的重要值。你可以通过简单地将它们移动到你的外部嵌套循环中来做到这一点,这样每次内部循环中断时,它们都会在每一轮猜谜游戏之前重置为你希望它们成为的样子。见这里:

       public static void main(String arg[])
      {
          Scanner input= new Scanner(System.in);
      
          while(true) 
          {
              int guess = 0,max,guesses = 0;
              String response;
              System.out.println("Guess the secret number\n");
              System.out.println("Enter maximum value for secret number: ");
              max=input.nextInt();
              int numbers=(int) (Math.random()* max) + 1;
              System.out.println("A new secret number has been choosen.");
      
              while (guess!=numbers)
              {
                  System.out.println("Enter guess");
                  guess=input.nextInt();
                  guesses++;
      
                  if (guess<numbers)
                  {
                      System.out.println("Two low; Try again ");
                  }
                  else if (guess>numbers)
                  {
                      System.out.println("To high; Try again");
                  }
      
              }
              System.out.println("You won in " + guesses + "!"); 
              System.out.print("\nPlay again? (Y/N)"); 
              response = input.next(); 
              if(response.equalsIgnoreCase("y"))
              {
                  continue; 
              }
              else
              {
                  break;
              }
      
          }
          input.close();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多