java - 猜谜游戏中的随机数
问题描述
我正在尝试编写一个猜数游戏程序,因此程序会生成一个随机数,并且程序会提示太高,太低,直到用户得到它的写。但是,随机生成器要么每次生成相同的随机数,要么对一个用户输入说“太高”,然后直接在用户输入之后/之前说“太低”
我已经在我的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!");
}
}
程序应该为游戏的每次迭代生成一个新的随机数,在每次正确猜测随机数后都会提示该随机数。
解决方案
希望这有助于为您澄清事情!
目前,您的随机数生成与游戏的其余部分处于同一循环中,这就是每次您获得新提示时它都会生成一个新数字的原因。一种解决方案是创建两个循环。一个循环来控制游戏是否会继续,在另一个循环内部来管理这一轮。
//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!");
}
}
干杯!
推荐阅读
- c# - 将带有 000 和 -1 的数字转换为只有一个 0 的正表示
- xamarin - Xamarin Forms 中照片的对象识别
- asp.net-core - 如何将 HasReadLink 添加到 OData 实体?
- python - 根据不在该表单中的列过滤模型表单
- python - 如何从实验室图像中删除 L 通道
- c# - 使用 sqlite 的 Entity Framework Core 中的奇怪行为
- spring - 如何在使用 informix 和 jdbcTemplate 的 Spring Boot 应用程序中更改设置锁定模式以等待?
- javascript - 如何在谷歌表格中获取更新的单元格值
- glsl - WebGL 错误 - INVALID_VALUE:shaderSource:字符串不是 ASCII
- python - 从 Excel 文件中读取合并的单元格并将它们存储在数据框中(使用 Python)