【问题标题】:Guessing Game - random # 1 thru 100, asks the user 5 times to guess correct number.....BEGINNER JAVA猜谜游戏 - 随机 #1 到 100,要求用户 5 次猜测正确数字.....BEGINNER JAVA
【发布时间】:2019-04-06 02:46:16
【问题描述】:

设计一个应用程序,从 1 到 100 中选择一个随机数,然后提示用户猜测该数字,警告用户他们只剩下 5 次尝试才能正确猜测。每次猜测后,向用户报告他或她是正确的还是猜测太高或太低。如果猜对了,打印出祝贺信息。如果猜 5 次不成功,则打印一条消息说游戏结束。在游戏结束时,提示用户表明他/她是否希望再次玩游戏。

我特别需要关于结尾的帮助,我猜还有代码的布局......我运行它并且它不断运行,我尝试使用几个网站和我的教科书但没有运气,提前谢谢你! !

Java、Net beans 8.2

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

public class GuessingGame 
{
    public static void main (String[]args)
    {
        int answer, guess,attemptsNum = 0;
        final int maxAttempts = 5;
        String str, another = "y";

        Scanner scan = new Scanner(System.in);
        Random generator = new Random();
        answer = generator.nextInt(101)+1;

        System.out.println("Guess a number between 1 and 100");
        System.out.println("Enter your guess (0 to quit):");

        {
            guess = scan.nextInt();
            while (guess != 0)
            {
                if(guess==answer)
                        System.out.println("Right!");
                else if (guess<answer)
                    System.out.println("Your guess was too LOW.");
                else if (guess>answer)
                    System.out.println("Your guess was too HIGH.");
            }

            System.out.println("Want to Play again?(y/n)");
            another = scan.next();

            while (guess != answer && ++attemptsNum < maxAttempts)
                if (attemptsNum == maxAttempts)
                    System.out.println ("The number was " + answer);
    }
}

}

输入您的猜测(0 表示退出):20 你的猜测太低了

输入您的猜测(0 表示退出):35 你的猜测太低了

输入您的猜测(0 表示退出):80 你的猜测太高了

输入您的猜测(0 表示退出):74 你的猜测太高了

输入您的猜测(0 表示退出):56 对!猜测:5

再玩一次(是/否)?

【问题讨论】:

  • 将字符串读入“另一个”变量有什么意义?您永远不会检查值。
  • 请在您的循环语句中添加括号以使其更具可读性。此外,如果您输入 0 以外的任何数字,guess != 0 将始终评估为 true 并导致无限循环。

标签: java


【解决方案1】:

几个cmets:

  1. 您需要对代码进行格式化。这使它更具可读性。
  2. 您的生成器生成一个介于 1 和 101 之间的值。它应该只是 answer = generator.nextInt(100)+1;
  3. 你的循环和你的一些逻辑是错误的
  4. 我建议始终在public static void main 之外创建一个单独的方法。这是常见的做法,这也允许您再次调用它自己的方法。

这就是我的解决方法:

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

class Main {
  public static Scanner scan = new Scanner(System.in);

  public static void main (String[]args) {
    runGame();
  }

  public static void runGame() {
    String another = "";
    int answer, guess,attemptsNum = 0;
    final int maxAttempts = 5;

    Random generator = new Random();
    answer = generator.nextInt(100)+1;

    System.out.println("Guess a number between 1 and 100");
    System.out.println("Enter your guess (0 to quit):");

    guess = scan.nextInt();
    while (guess != answer && attemptsNum < maxAttempts-1 && guess != 0 ) {
      if(guess==answer)
            System.out.println("Right!");
      else if (guess<answer) {
        System.out.println("Your guess was too LOW.");
        attemptsNum++;
        guess = scan.nextInt();
      } 
      else {
        System.out.println("Your guess was too HIGH.");
        attemptsNum++;
        guess = scan.nextInt();
      }
    }

    System.out.println ("The number was " + answer);
    System.out.println("Want to Play again?(y/n)");
    another = scan.next();
    System.out.println("another = " + another);
    if(another.equals("y")) {
      runGame();
    } else {
      System.out.println("Goodbye!");
    }
  }
}

但无论哪种方式,只要继续练习。你会得到它的窍门!

【讨论】:

    【解决方案2】:

    我看到外部 while 循环需要重新构建,并且一些逻辑错位了。试试修改后的版本,希望对你有帮助。如果您有任何问题,请评论我。

    import java.util.Random;
    import java.util.Scanner;
    
    public class GuessingGame {
    
        public static void main(String[] args) {
    
            int answer, guess, attemptsNum = 0;
            final int maxAttempts = 5;
            String str, another = "y";
    
            Scanner scan = new Scanner(System.in);
            Random generator = new Random();
            answer = generator.nextInt(101) + 1;
    
            while (another.equals("y") || another.equals("Y")) {
                System.out.println("Guess a number between 1 and 100");
    
                System.out.println("Enter your guess (0 to quit):");
    
                guess = scan.nextInt();
                attemptsNum = 0;
                while (guess != 0)
    
                {
                    attemptsNum++;
                    if (guess == answer) {
                        System.out.println("Right!");
                        break;
                    } else if (guess < answer)
                        System.out.println("Your guess was too LOW.");
                    else if (guess > answer)
                        System.out.println("Your guess was too HIGH.");
    
                    if (attemptsNum == maxAttempts) {
                        System.out.println("The number was " + answer);
                        break;
    
                    }
    
                    System.out.println("Enter your guess (0 to quit):");
                    guess = scan.nextInt();
                }
    
                System.out.println("Want to Play again?(y/n)");
                another = scan.next();
            }
            System.out.println("Thanks for playing");
        }
    }
    

    【讨论】:

      【解决方案3】:

      我可以看到 javapedia.net 已经先回答了,但我已经独立提出了这个答案。为了便于阅读,我添加了括号。对于猜测太高或太低的 if 语句添加了尝试数++。

      import java.util.Random;
      import java.util.Scanner;
      
      public class GuessingGame {
      
          public static void main(String[] args) {
      
              int answer, guess, attemptsNum = 0;
              final int maxAttempts = 5;
              String str, another = "y";
      
              Scanner scan = new Scanner(System.in);
              Random generator = new Random();
              answer = generator.nextInt(101) + 1;
      
              System.out.println("Guess a number between 1 and 100");
              System.out.println("Enter your guess (0 to quit):");
      
              guess = scan.nextInt();
              while (guess != 0) {
                  if (guess == answer) {
                      System.out.println("Right!");
                      guess = 0;
                  } else if (guess < answer) {
                      System.out.println("Your guess was too LOW.");
                      attemptsNum++;
                      guess = scan.nextInt();
                  } else {
                      System.out.println("Your guess was too HIGH.");
                      attemptsNum++;
                      guess = scan.nextInt();
                  }
                  if (attemptsNum >= (maxAttempts-1)) {
                      System.out.println("The number was " + answer);
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-29
        • 2019-06-02
        相关资源
        最近更新 更多