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

为何我的setLength/getLength与setWidth/getWidth方法无法正常工作?

问题分析与修复方案

核心错误原因

你只在Oval类里声明了私有成员变量width和length,但没有定义对应的setLength、getLength、setWidth、getWidth方法,Java编译器找不到这些方法的实现,所以抛出“找不到符号”的错误。另外代码里还有两处语法问题:

  • oval.getWidth少了调用方法的括号,应该是oval.getWidth()
  • 你调用了oval.getArea(),但同样没定义这个计算面积的方法

修复步骤

  1. 为私有成员变量添加对应的Getter和Setter方法,用于读取和修改变量值
  2. 补全getArea()方法(椭圆面积公式为:π×长半轴×短半轴,这里假设length是长轴,width是短轴,取一半计算)
  3. 修正printf语句里的语法错误,同时调整格式化字符串的写法(原字符串里的%, .4f多了空格,应该是%.4f或%,.4f)

修复后的完整代码

package practice;

public class Oval {

    private double width;
    private double length;

    // 为length设置值的方法
    public void setLength(double length) {
        this.length = length;
    }

    // 获取length值的方法
    public double getLength() {
        return length;
    }

    // 为width设置值的方法
    public void setWidth(double width) {
        this.width = width;
    }

    // 获取width值的方法
    public double getWidth() {
        return width;
    }

    // 计算椭圆面积的方法
    public double getArea() {
        // 椭圆面积公式:π * (长轴/2) * (短轴/2)
        return Math.PI * (length / 2) * (width / 2);
    }

    public static void main(String[] args) {
        Oval oval = new Oval();
        oval.setLength(102.13);
        System.out.println("the oval's length is: " + oval.getLength());

        oval.setWidth(211.02);
        System.out.printf("The oval's width is: %.4f%n", oval.getWidth());

        String str = "Given the length %.4f and the width %.4f,\n\tthe oval's area is %.4f sq.ft%n";
        System.out.printf(str, oval.getLength(), oval.getWidth(), oval.getArea());
    }
}

额外说明

  • 原代码里把椭圆叫成“circle”(圆)不太准确,已经改成“oval”(椭圆)
  • printf的格式化字符串里,%n是跨平台的换行符,比\n更通用
  • 如果你的length和width指的是半轴长度,直接用Math.PI * length * width计算面积即可,根据实际需求调整getArea方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:24:22