为何我的setLength/getLength与setWidth/getWidth方法无法正常工作?
问题分析与修复方案
核心错误原因
你只在Oval类里声明了私有成员变量width和length,但没有定义对应的setLength、getLength、setWidth、getWidth方法,Java编译器找不到这些方法的实现,所以抛出“找不到符号”的错误。另外代码里还有两处语法问题:
oval.getWidth少了调用方法的括号,应该是oval.getWidth()- 你调用了
oval.getArea(),但同样没定义这个计算面积的方法
修复步骤
- 为私有成员变量添加对应的Getter和Setter方法,用于读取和修改变量值
- 补全
getArea()方法(椭圆面积公式为:π×长半轴×短半轴,这里假设length是长轴,width是短轴,取一半计算) - 修正
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
相关产品推荐
相关产品推荐

