【问题标题】:Random number in guessing game猜谜游戏中的随机数
【发布时间】:2019-11-29 20:43:31
【问题描述】:

我正在尝试编写一个猜数游戏程序,因此程序会生成一个随机数,并且程序会提示太高,太低,直到用户得到它的写。然而,随机生成器要么每次生成相同的随机数,要么对一个用户输入说“太高”,然后直接在用户输入之后/之前说“太低”

我已经在我的 while 循环中移动了随机生成器,在这种情况下,它说输入“太高”,而它后面的数字“太低”。 当我将随机生成器移到循环之外时,它只会为游戏的每次刺激生成相同的数字。

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

public class NumberGuessingGame {

    public static void main(String[] args) {
        int randomNumber, userNumber = 0, guesses = 0;
        final int MAX = 100;
        char playGame = 'y';

        Random generator = new Random();

        // ask user if they wish to play
        System.out.println("Would you like to play the Number Guessing y / n");
        Scanner scan = new Scanner(System.in);

        playGame = scan.next().charAt(0);

        // while loop to continue to execute game as long as the user enters 'y'
        while (playGame == 'y') {
            if (playGame != 'y')
                break;

            randomNumber = generator.nextInt(MAX) + 1;

            System.out.println("Please pick a number between 1 and 100.");
            userNumber = scan.nextInt();

            // high and low sugguestion
            if (userNumber > randomNumber)
                System.out.println("Number is too high, try something lower.");
            if (userNumber < randomNumber)
                System.out.println("Number is too low, try something higher.");
            if (userNumber == randomNumber) {
                System.out.println("That number is correct!");
                System.out.println("Would you like to play again? y/n");
                playGame = scan.next().charAt(0);
            }
            // counter to keep running total of times guessed
            guesses++;
            System.out.println("You have guessed " + guesses + " times!");

        }

        // break statement skips here when 'n' is entered in
        // the game prompting question
        System.out.println("Thanks for playing, have a nice day!");
    }
}

程序应该为游戏的每次迭代生成一个新的随机数,在每次正确猜测随机数后都会提示该随机数。

【问题讨论】:

  • for each irritation of the game - 我希望你的意思是迭代 :)
  • 答案很简单,我会在评论中回答:每次开始新游戏时都会生成一个新号码。看看你的代码;新游戏开始的地方已经标有would you like to play
  • 顺便说一句,if (playGame != 'y') break; 可以删除,因为if 永远不会被输入。
  • 一旦您自己解决了问题,您就可以回答您自己的问题来关闭它。

标签: java loops random while-loop


【解决方案1】:

希望这有助于你澄清事情!

目前,您的随机数生成与游戏的其余部分处于同一循环中,这就是每次您获得新提示时它都会生成一个新数字的原因。一种解决方案是创建两个循环。一个循环来控制游戏是否会继续,而在另一个循环内部来管理这一轮。

//The loop controlling the game   
while (playGame == 'y') {
        if (playGame != 'y')
            break;

        randomNumber = generator.nextInt(MAX) + 1;
        //Creating a flag to control the inner loop
        int correct = 0;

        //The loop to control the round.
        while (correct == 0){
            System.out.println("Please pick a number between 1 and 100.");
            userNumber = scan.nextInt();

            // high and low sugguestion
            if (userNumber > randomNumber)
                System.out.println("Number is too high, try something lower.");
            if (userNumber < randomNumber)
                System.out.println("Number is too low, try something higher.");
            if (userNumber == randomNumber) {
                System.out.println("That number is correct!");
                correct = 1;
                System.out.println("Would you like to play again? y/n");
                playGame = scan.next().charAt(0);
            }            

            // counter to keep running total of times guessed
            guesses++;
            System.out.println("You have guessed " + guesses + " times!");
        }

    }    

干杯!

【讨论】:

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