当前位置: 首页 > 知识库问答 >
问题:

猜谜游戏-随机#1到100,要求用户5次猜正确的数字…初学者JAVA

华英睿
2023-03-14

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你的猜测太低了

共有1个答案

蒋啸
2023-03-14

几点评论:

  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!");
    }
  }
}
 类似资料:
  • 我在做一个数字猜谜游戏: 计算机在间隔内生成一个数字 我试着猜测它,并收到一个回复,不管它是高于/低于我的猜测,还是等于我的猜测,我赢了 有一个可以猜测的间隔,还有一个猜测尝试限制

  • 我的程序应该要求用户猜测 0 到 100 之间的数字,但我似乎无法正确输出。目前,如果用户数大于随机数,它会打印出无限数量的“您的数字太高”。此外,如果第一个 UserGuess 很低,那么以下所有数字都将具有相同的提示:(“您的数字太低”),尽管它们实际上大于随机数。我不知道我做错了什么。任何帮助将不胜感激。谢谢!

  • 好吧,我知道这个以前有人问过,但我就是想不出哪里出了问题。以下是我的说明: “编写一个程序,生成1到1000之间的随机数。然后让用户猜猜数字是多少。如果用户的猜测值高于随机数,程序应该显示“太高,再试一次”。如果用户的猜测值低于随机数,程序应该显示“太低,再试一次”。程序应该使用一个循环,直到用户正确猜测出随机数。 还有,保持用户猜测次数的计数。当用户正确猜测随机数时,程序应该显示猜测的次数。输入

  • 我想做一个简单的猜谜游戏,电脑应该猜出我在0和100之间选择的数字。尝试运行它,如果数字太低按1,如果数字太高按2。 1.如果我选择50,计算机猜测41,我按1,因为数字太低了 是55吗?2 是26吗?1 是35吗?1 是97吗?2

  • 尝试用代码块c语言编写一个程序: 生成一个从的随机密码,并要求用户猜测该数字 如果用户猜测正确,则打印猜测是正确的 对于第一个猜测,如果它不正确,应该说热 如果用户的猜测越来越接近秘密,则告诉用户他正在变热 如果他的猜测离得更远的话,也可能是冷的 游戏继续,直到猜到密码 我当前的程序在猜测是热还是冷方面给出了错误的输出,也不确定我应该将vs如果有的话,或者在哪里使用 “else if”。如果不是太