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

Java自定义Rectangle类输入参数未生效始终使用默认值问题求助

问题原因分析
  • 实例对象使用错误:你在main方法中创建了len、wid、a三个完全独立的Rectangle实例,给len设置长度、给wid设置宽度的操作完全不会影响a的属性值,最后调用a.computeArea()自然只能拿到默认值1*1的计算结果。
  • 核心方法逻辑错误:
    • 面积计算方法computeArea错用了Math.pow()求幂方法,矩形面积计算公式是长度*宽度,不是「长度的宽度次方」
    • 周长计算方法computePerimeter漏了乘2,矩形周长公式是2*(长度+宽度),不是只有长度加宽度的和

修正后的代码

Rectangle.java

package geometry;
// file name Rectangle.java
/**
 *
 * @author 12484
 */
public class Rectangle {

 // 实例属性
 private double myWidth;
 private double myLength;

 // 无参构造:使用默认长宽1
 public Rectangle() {
  myWidth = 1;
  myLength = 1;
 }
 // 带参构造:传入自定义长宽
 public Rectangle (double width, double length) {
  myWidth = width;
  myLength = length;
 }

 // 访问方法
 public double getWidth() {
  return myWidth;
 }

 public double getLength() {
  return myLength;
 }

 // 修改方法
 public void setWidth(double width) {
  myWidth = width;
 }

 public void setLength(double length) {
  myLength = length;
 }

 // 计算面积
 public double computeArea() {
  return getLength() * getWidth();
 }

 // 计算周长
 public double computePerimeter() {
  return 2 * (getLength() + getWidth());
 }
}

Rectest.java

package geometry;
// filename Rectest.java
public class Rectest {
    public static void main(String[]args){
        // 方式1:无参构造使用默认值,之后手动修改属性
        Rectangle rect1 = new Rectangle();
        System.out.println("rect1默认面积:" + rect1.computeArea()); // 输出1.0
        // 对同一个实例修改长宽
        rect1.setLength(5.2);
        rect1.setWidth(7.5);
        System.out.println("rect1修改后面积:" + rect1.computeArea()); // 输出39.0

        // 方式2:直接调用带参构造传入自定义值
        Rectangle rect2 = new Rectangle(3,4);
        System.out.println("rect2自定义面积:" + rect2.computeArea()); // 输出12.0
        System.out.println("rect2自定义周长:" + rect2.computePerimeter()); // 输出14.0
    }
}

使用说明
  • 不需要自定义长宽时,直接调用无参构造new Rectangle()就会自动使用默认值1作为长宽
  • 需要自定义长宽时,两种方式都可实现:要么创建实例时直接调用带参构造传入数值,要么创建无参实例后调用setWidth、setLength方法修改同一个实例的属性即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:01