如何修复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
相关产品推荐
相关产品推荐

