【问题标题】:Guessing game play again trouble猜猜玩游戏又麻烦了
【发布时间】:2014-09-24 13:35:41
【问题描述】:

好的,所以我尝试了一种方法,但每次我出于某种原因输入数字时,它都会一直显示“你想再玩一次吗”。这是我到目前为止所拥有的。我还能做些什么,以便只有在用户猜到正确答案后才会询问他/她是否想再玩一次?

import java.util.Random;
import java.util.Scanner;

public class GuessNumber {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        Random rand = new Random();
        int number = rand.nextInt(100) + 1;
        int guess;

        System.out.println("Guess the number between 1 and 100\n");

        guess = scan.nextInt();

        while (true) {
            if(guess < number)       
               System.out.println("Higher!");
            else if(guess > number)
               System.out.println("Lower!");
            else if (guess == number){
               System.out.println("Correct!");
            }
               guess = scan.nextInt();
       }
    }
  }

【问题讨论】:

    标签: java if-statement while-loop


    【解决方案1】:

    试试这个

    class GuessNumber {
    
        static Random rand = new Random();
        static Scanner scan = new Scanner(System.in);
        static int number;
    
        public static void main(String[] args) {
            playGame();
        }
    
        public static void playGame() {
            number = rand.nextInt(100) + 1;
            System.out.println("Guess the number between 1 and 100");
            while (true) {
                int guess = scan.nextInt();
                if (guess < number) {
                    System.out.println("Higher!");
                } else if (guess > number) {
                    System.out.println("Lower!");
                } else if (guess == number) {
                    System.out.println("Correct!");
                    System.out.println("Do you like to play again?[1 for Yes/0 for No]");
                    int val = scan2.next();
                    if (val == 1)
                        playGame();
                    else
                        break;
                }
            }
        }
    }
    

    或者您可以使用另一个扫描仪并按如下方式获取字符串输入,而不是使用相同的扫描仪

     else if (guess == number) {
          System.out.println("Correct!");
          Scanner scan2 = new Scanner(System.in);
          System.out.println("Do you like to play again?[Y/N]");
          String val = scan2.next();
          if (val.equalsIgnoreCase("Y"))
               playGame();
          else 
               break;
     }
    

    【讨论】:

    • 是的,这个不错!但我删除了 System.out.println(number);所以它会在运行时显示数字
    • @user4068770 很抱歉犯了错误。我把它只是为了我的调试目的。在发布答案之前,我忘记将其删除。现在我删除了它。希望这对您有所帮助。
    • 支持对您有帮助的答案,如果有任何答案解决了您的问题,请将其标记为 asnswer
    • 它不会让我因为我没有 15+ 代表
    【解决方案2】:

    正确时需要退出while。

    这样做,在行之后:

    System.out.println("Correct!");
    

    像这样添加另一行:

    break;
    

    【讨论】:

      【解决方案3】:

      主要是出于乐趣,我实现了一款符合您想要做的事情的描述的游戏。代码不是最干净/最高效的,但它确实有效!

      看看它,看看你是否能找出你的问题。

      import java.util.Random;
      import java.util.Scanner;
      
      public class GuessingGame {
      
      public static void main(String[] args) {
      
              System.out.println("Guess the number between 1 and 100");
      
              playGuessingGame();
      
              while (true) {
                  System.out
                      .println("Do you want to play again? Type y / n and hit enter");
      
                  Scanner scan = new Scanner(System.in);
                  String playAgain = scan.next();
      
                  if (playAgain.charAt(0) == 'y') {
                      System.out.println("Okay, I picked a new number. Good luck!");
                      playGuessingGame();
                  } else {
                      System.out.println("Thanks for playing!");
                      break;
                  }
              }
      
          }
      
          public static void playGuessingGame() {
              Scanner scan = new Scanner(System.in);
              Random rand = new Random();
      
              int guess;
              int number = rand.nextInt(100) + 1;
      
              guess = scan.nextInt();
      
              while (guess != number) {
                  if (guess < number)
                      System.out.println("Higher!");
                  else if (guess > number)
                      System.out.println("Lower!");
                  else if (guess == number) {
                      System.out.println("Correct!");
                  }
                  guess = scan.nextInt();
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-23
        • 2019-09-09
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多