You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java骰子程序:调用rollDie方法时如何无需传入已定义的sides参数?

解决方案

核心修改点

  • 移除rollDie方法的sides参数,直接使用对象实例中存储的sides值
  • 将Random对象提升为类成员变量,避免每次掷骰都创建新实例,提升性能
  • 对成员变量做封装,将sides设为private,符合面向对象的封装原则(可选但推荐)

修改后的代码

Dice.java

import java.util.Random;

public class Dice {
    private int sides;
    private final Random random; // 类成员级别的Random实例

    // 构造方法初始化面数和Random对象
    public Dice(int sides) {
        this.sides = sides;
        this.random = new Random();
    }

    // 无参数的rollDie方法,使用对象自身的sides值
    public int rollDie() {
        // nextInt(sides)生成0到sides-1的随机数,加1后变成1到sides的范围
        return random.nextInt(sides) + 1;
    }

    // 可选:获取当前骰子面数的getter方法
    public int getSides() {
        return sides;
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        Dice d6 = new Dice(6);
        // 如果需要查看面数,用getter方法
        System.out.println(d6.getSides());
        // 调用无参数的rollDie方法
        System.out.println(d6.rollDie());
    }
}

关键说明

  • 原代码中random.nextInt(sides + 1) + 1会生成1到sides+1的随机数,属于逻辑错误,正确写法是random.nextInt(sides) + 1,才能得到1到sides的合法掷骰结果
  • 把Random设为类成员,避免每次调用rollDie都创建新的Random实例,减少不必要的对象开销
  • 封装sides为private,防止外部直接修改,保证骰子面数的一致性

内容的提问来源于stack exchange,提问作者HermitIX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:08:18