簡體   English   中英

猜游戲中的隨機數

[英]Random number in guessing game

我試圖編寫一個數字猜猜游戲程序,因此該程序會生成一個隨機數,並且程序會提示用戶輸入的值過高,過低,直到用戶寫完為止。 但是,隨機數發生器要么每次都生成相同的隨機數,要么對一個用戶輸入說“太高”,然后在之后/之前直接對用戶輸入說“太低”。

我將隨機生成器移到了while循環中,在這種情況下,它說輸入“太高”,其后的數字“太低”。 當我將Random Generator移到循環外時,它會為每次游戲刺激生成相同的數字。

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!");
    }
}

該程序應為游戲的每次迭代生成一個新的隨機數,在每次正確猜出randomNumber后都會提示該隨機數。

希望這有助於為您澄清事情!

當前,您的“隨機數生成”與游戲其余部分處於同一循環中,這是每次您獲得新提示時都會生成新數字的原因。 一種解決方案是創建兩個循環。 一個循環控制游戲是否會繼續,而另一個循環則控制該回合。

//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!");
        }

    }    

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM