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

Java setMethod不生效 传值未赋值 长除法输出全0问题排查

问题根因

你的所有业务类都各自创建了独立的Result实例,没有共用同一个对象存储计算结果:Divider计算出来的属性值存在自己新建的Result里,Formatter读取的是自己新建的空白Result,属性自然都是int类型的默认值0,并不是set方法不生效。

修复步骤

1. 改造类构造方法,支持传入共用实例

  • 修改Divider构造方法,不要自己新建Result,改用外部传入的共用实例:
public class Divider {
    Result result;
    // 替换原有无参构造
    public Divider(Result result) {
        this.result = result;
    }
    // 其余原有方法保持不变,注意清理代码里多余的反引号和乱码字符
}
  • 修改Formatter构造方法,使用外部传入的共用Result和Divider实例,同时删除方法里多余的enter code here等乱码:
public class Formatter {
    Result result;
    Divider divider;
    private int firstIndexPartialDividend = 0;
    private int countSpace = 0;
    // 替换原有无参构造
    public Formatter(Result result, Divider divider) {
        this.result = result;
        this.divider = divider;
    }
    // 其余原有方法保持不变,注意原来的format方法是无参,删掉多余的参数声明即可
}
  • 清理Result类的无效构造逻辑,删除乱码:
public class Result {
    // 原有属性保持不变
    public Result() {
        // 删掉原来的无效赋值:this.dividend = dividend; this.divisor = divisor;
    }
    // 原有get/set方法保持不变
}

2. 改造Main类初始化逻辑,全局共用同一个Result实例

public class Main {
    public static void main(String[] args) {
        // 全局只创建一个Result实例,所有类共用
        Result result = new Result();
        Divider divider = new Divider(result);
        String[] myTestArray = new String[]{"1234", "12"};
        if (myTestArray.length != 2) {
            System.out.printf("You can not use %d arguments. To perform division, you need to use 2 arguments", myTestArray.length);
            System.exit(1);
        }
        int dividend = Integer.parseInt(myTestArray[0]);
        int divisor = Integer.parseInt(myTestArray[1]);
        divider.divide(dividend, divisor);
        Formatter formatter = new Formatter(result, divider);
        formatter.format();
    }
}

后续注意事项

修改完成后Result的属性就能正常读取到计算值,你当前的Formatter只实现了前两行的打印逻辑,后续补充完余数、下一级被除数的遍历打印逻辑,就能输出完整的长除法格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:00