java - 使用 do-while 循环为随机数猜谜游戏生成新的随机数
问题描述
目标:创建一个游戏,从 1-100 随机生成一个数字并要求用户猜测它。
问题是:在我询问用户是否要继续(如果不退出程序)之后,我试图生成一个新数字,如果他们愿意,那么我想为他们生成一个新的随机数。我不知道该怎么做。
如果有人可以帮助我,那就太好了,谢谢!
import java.util.Scanner;
import java.util.Random;
public class SuperRandom
{
public static void main(String [] args)
{
Scanner keyboard = new Scanner(System.in);
Random randy = new Random();
//#declaring variables
int num, count = 0;
final int random = randy.nextInt(100);
final int randoms = randy.nextInt(100);
String input;
char yn;
//#random number
System.out.println("Num = " + random);
//#title or header
System.out.println("Random Number Guessing Game");
System.out.println("===========================");
//#asking user for input
do
{
do
{
System.out.print("Guess the random number " +
"from 1 to 100===> ");
num = keyboard.nextInt();
//#if the number the user entered
//#was less than the random number
if(num < random)
{
//#display this message
System.out.println("Your guess is too low try again...");
System.out.println();
if (num < 1)
{
System.out.println("Invalid Input" +
"\nYour guess cannot be a negative" +
" number");
}
}
//#if the number the user entered
//#was less than the random number
if(num > random)
{
//#display this message
System.out.println("Your guess is too high try again...");
System.out.println();
if (num > 100)
{
System.out.println("Invalid Input"+
"\nYour guess cannot be above 100");
}
}
count++;
if (num == random)
{
System.out.println("You guessed the random number in " +
count + " guesses!");
break;
}
}
while (num > 1 || num < 100);
yn = 'x';
System.out.print("Continue? (Y or N)==> ");
input = keyboard.next();
yn = input.charAt(0);
}
while (yn == 'Y' || yn == 'y');
}
}
解决方案
您可以在外循环的开始或结束时生成随机数。在这种情况下,您需要从 random 的声明中删除 final 关键字,因为这会告诉编译器该值永远不会改变。
// declarations and header
int random;
//#asking user for input
do
{
random = randy.nextInt(100); // here
System.out.println("Num = " + random);
do
{
// guessing loop
}
while (num > 1 || num < 100);
random = randy.nextInt(100); // or here if you want to keep the line that generates the random number before the loop
// checks for continue
}
while (yn == 'Y' || yn == 'y');
显然,在外循环开始时生成它可能是最好的。
另外我不知道你对内部循环保护的意思,但任何整数都满足大于 1 或小于 100。
推荐阅读
- excel - Excel 查找和索引匹配公式
- android-studio - ADB 仅适用于 Flutter 而不是 Android Studio 中的 Android?
- javascript - HTML DOM - 将字符串分散到多行
- javascript - jquery只保留小数点后两个数字
- rust - 生命周期问题:“类型有不同的生命周期,但来自‘自我’的数据流入......”
- reporting-services - RDLC - VS 报告新页面
- background - 在鼠标悬停时用js更改背景图像
- c - 我在哪里可以找到 xcb 库的实现?
- python - 计算二维 Numpy 数组中数字对频率的最有效方法
- ruby - Ruby 程序未从 httparty 获取请求返回结果