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

如何修复Java类Area1中乘法运算结果始终为0的错误

问题根因
  • 你实例化正方形、矩形对象时调用的双参数构造方法,仅会为height和base两个成员变量赋值,不会给side1/side2、width/length赋值,Java中未被手动赋值的int类型成员变量默认值为0,所以乘法运算结果始终是0。
  • 你现有编写的两个构造方法完全无法匹配正方形、矩形的实例化需求:
    • 6参数构造需要传入6个参数,但你实例化时仅传了2个,不会被触发调用
    • 原私有双参数构造是为三角形设计的,参数对应height和base,和正方形、矩形需要的参数属性完全不匹配,且私有构造方法本就不允许类外调用
修复方案

第一步:新增适配不同图形的构造方法

在Area1类中补充正方形、矩形对应的构造方法,同时将三角形的构造方法权限改为public:

// 正方形专用构造方法
public Area1(int side1, int side2) {
    this.side1 = side1;
    this.side2 = side2;
}
// 矩形专用构造方法,新增标记参数避免和其他双参构造的方法签名冲突
public Area1(int width, int length, boolean isRectangle) {
    this.width = width;
    this.length = length;
}
// 三角形构造方法,修改权限为public允许外部调用
public Area1(int height, int base) {
    this.height = height;
    this.base = base;
}

第二步:修改main方法中矩形的实例化代码

适配新增的矩形构造方法,修改对应行代码为:

Area1 rectangle = new Area1(width,length, true);

修改完成后重新运行即可得到正确的乘法计算结果。

优化建议(可选)

如果要让代码逻辑更清晰,建议将不同图形的逻辑拆分为独立类,避免不同图形的属性混在同一个类中造成调用混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:15:05