【发布时间】:2022-01-24 06:45:15
【问题描述】:
所以我必须创建一个 java 程序,使用以下方法计算圆的直径和面积:setRadius() 和 getRadius()。 setRadius() 也必须用于计算这两个值并设置半径。我使用构造函数将半径指定为 1,但我还必须计算更大圆的直径/面积。运行代码时,它在系统打印行中显示“找不到符号”的直径。这是我到目前为止的代码:
class My_Circle extends Main{
float radius = 1;
public float getRadius() {
return radius;
}
public void setRadius(float newRadius) {
this.radius = newRadius;
float diameter = radius*2;
float area = radius*radius*3.14159265359f;
}
}
public class Main {
public static void main(String args[]) {
My_Circle large = new My_Circle();
My_Circle original = new My_Circle();
large.setRadius(100);
original.setRadius(original.getRadius());
System.out.println("Large Circle Diameter: " + diameter);
}
}
【问题讨论】:
-
diameter在您的main方法中不可见。 -
@Arnaud 一个愚蠢的问题,但是,我该如何解决?
-
退后一步。问问自己:您将
radius设为全班的字段。但是你也在这个或那个方法中定义了 local 变量。问问自己:什么应该在哪里可见?!你看......局部变量直径和面积仅存在于setRadius()方法中。 -
提示:也许,您可以添加 2 个其他方法,而不是计算该 setMethod 中的这两个值:
getDiameter()和getArea()。然后,当您需要 Circle 对象的直径时,只需调用这些方法(或者您可以将这两个数字作为字段添加到您的类中,并计算一次)。请注意:您可以使用构造函数而不是 setter。而且:没有理由让您的 Circle 类扩展 Main。请记住:您必须了解您放入源代码的每个字符。您不能从 Main 扩展 Circle,因为您 可以。 -
您只使用那些有意义要使用的结构。示例:如果您有一个“Shape”基类,那么从它扩展 Circle 是有意义的。但是您的 Main 类只是入口点,是用于最终调用某些代码的“驱动程序”。无需将 Circle 设为 Main。
标签: java geometry calculator