改进猜数字练习——加入随机数
上节课的猜数字游戏中,目标数字是固定的 65,这不够有趣。我们可以改用随机数来生成目标数字。
Math.random() 方法
Java 中提供了 Math.random() 方法,用于获取一个大于等于 0.0 且小于 1.0 的随机 double 值:
0.0 ≤ Math.random() < 1.0Code language: CSS (css)
生成指定范围的随机数
如果要获取 1 到 100 之间的随机整数:
(int)(Math.random() * 100) + 1Code language: JavaScript (javascript)
原理拆解:
| 步骤 | 计算 |
|---|---|
Math.random() | 得到 0.0 ~ 0.999... |
* 100 | 得到 0.0 ~ 99.999... |
(int) 强制转换 | 截断小数,得到 0 ~ 99 |
+ 1 | 得到 1 ~ 100 |
同理,生成 1 ~ 1000 的随机数:
(int)(Math.random() * 1000) + 1Code language: JavaScript (javascript)
改进后的完整代码
public static void main(String[] args) {
int num = (int)(Math.random() * 100 + 1); // 生成 1~100 的随机目标数字
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个数字(1~100,输入0退出):");
int input = scan.nextInt();
while (input != num) {
if (input == 0) {
System.out.println("已退出游戏。");
break;
}
if (input > num) {
System.out.println("太大了");
} else {
System.out.println("太小了");
}
System.out.println("请继续输入(输入0退出):");
input = scan.nextInt();
}
if (input != 0) {
System.out.println("猜中了!答案是 " + num);
}
}Code language: JavaScript (javascript)
运行示例
请输入一个数字(1~100,输入0退出):
50
太大了
请继续输入(输入0退出):
25
太小了
请继续输入(输入0退出):
37
猜中了!答案是 37
另一种生成随机数的方式
除了 Math.random(),还可以使用 Random 类:
import java.util.Random;
Random random = new Random();
int num = random.nextInt(100) + 1; // 生成 1~100 的随机整数Code language: JavaScript (javascript)
| 方式 | 优点 | 缺点 |
|---|---|---|
Math.random() | 无需创建对象,直接调用 | 只能生成 double,需手动转换 |
Random 类 | 方法丰富,可生成各种类型随机数 | 需要 import 并创建对象 |
注意:每次运行程序,
Math.random()生成的目标数字都不同,增加了游戏的趣味性和挑战性。
Previous: 练习——猜数字
Next: do-while 结构