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

面向对象开发Java闲置骰子游戏时分数无法正确累加如何解决

问题定位

你代码的异常原因和setScore方法无关,问题出在addScore的实现逻辑:

  • 每次调用addScore时都会新生成一个McMurchyScore实例,每个新建实例的score属性默认初始值为0,因此每次执行give.setScore(sides)时,都是在0的基础上加上本次的sides值,最终表现就和sides直接覆盖了旧score一致,无法累加历史分数。

修复方案

核心要保证全程使用同一个McMurchyScore实例存储累计总分,可根据你的业务逻辑二选一实现:

  1. 将McMurchyScore实例作为当前类的成员变量,仅初始化一次
// 在类的属性定义部分添加此行,仅初始化一次实例
private McMurchyScore give = new McMurchyScore();

public void addScore()
{
    // 直接复用已初始化的实例更新分数,不要重复new对象
    give.setScore(sides);
}
  1. 如果score本身就是当前类的成员属性,无需额外创建McMurchyScore对象,直接调用当前类的setScore方法即可
public void addScore()
{
    this.setScore(sides);
}

补充优化提示

你当前rollDice方法里把倍率mult固定写死为1,如果后续要实现骰子翻倍、道具加成类的功能,可以把mult调整为可动态修改的成员变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:24:02