[英]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.