RollDice Java程序启动时如何将骰子默认面值设置为1
问题解决思路
核心原因:Die 类实例化时默认调用了随机掷骰子的roll()方法,导致启动时面值无法固定为1,以下是两种可直接落地的修改方案:
方案1:修改Die类构造逻辑(全局生效,改动最小)
适合所有使用Die类的场景都需要默认面值为1的需求,直接替换Die构造方法中的roll()调用为固定赋值即可:
// 原Die类构造方法 public Die() { setPreferredSize(new Dimension(60,60)); roll(); } // 修改后 public Die() { setPreferredSize(new Dimension(60,60)); setValue(1); }
如果后续需要灵活配置默认面值,还可以扩展重载构造方法:
// 新增带默认面值参数的构造方法 public Die(int defaultFace) { setPreferredSize(new Dimension(60,60)); // 参数合法性校验,避免传入非1-6的数值 if(defaultFace >=1 && defaultFace <=6) { setValue(defaultFace); } else { setValue(1); } }
方案2:仅修改RollDicePanel初始化逻辑(局部生效,不侵入Die类)
适合仅当前掷骰子程序需要默认面值1,其他业务场景引用Die类仍保留随机初始化逻辑的需求,在RollDicePanel实例化骰子后手动赋值即可:
// 原RollDicePanel构造方法中的实例化逻辑 public RollDicePanel() { onlyDie = new Die(); // 新增一行代码覆盖随机值 onlyDie.setValue(1); // 后续原有逻辑保持不变 JButton rollButton = new JButton("Roll"); // ...其余代码不用修改 }
两种方案都不会影响原有点击Roll按钮掷骰子的功能,仅修改启动初始化的默认值。
内容的提问来源于stack exchange,提问作者Simone Queen
相关产品推荐
相关产品推荐

