改进猜数字练习——加入随机数

改进猜数字练习——加入随机数

上节课的猜数字游戏中,目标数字是固定的 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() 生成的目标数字都不同,增加了游戏的趣味性和挑战性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注