2 回答
TA贡献1725条经验 获得超7个赞
让我们从类 Circle 开始。这是您的原始代码:
public class Circle
private int radius = getRadius();
private double area = getArea();
public Circle(int r)
{
r = radius;
}
public int getRadius()
{
return radius;
}
public double getArea(int r)
{
return area = Math.PI * r * r;
}
}
对于您的变量,您不需要“面积”,因为它是计算出来的。此外,除了在构造函数中,您不应该将半径分配给任何东西:
private int radius;
//private double area = getArea(); <-- don't need this variable at all
您将“r”传递给构造函数,但随后错误地尝试为其分配“半径”值。这是倒退;您应该将“r”值分配给“radius”:
public Circle(int r)
{
radius = r;
}
最后,在 中getArea(),您不需要传入的半径或“区域”;只需返回计算值(使用“半径”中的存储值,而不是“r”):
public double getArea()
{
return Math.PI * radius * radius;
}
总而言之,您的 Circle 类应该看起来更像:
public class Circle
private int radius;
public Circle(int r)
{
radius = r;
}
public int getRadius()
{
return radius;
}
public double getArea()
{
return Math.PI * radius * radius;
}
}
在 CircleTest 中,您应该首先从用户那里获取半径,然后将其传递给 Circle 的构造函数。最后,使用您的 Circle 实例,调用它的 getRadius() 和 getArea() 方法。
TA贡献2036条经验 获得超8个赞
你还没有定义变量r
和area
,来帮助解决这个问题
替换double area = getArea(r);
为double area = circle.getArea(radius);
和
System.out.println("The area of the circle is... " + area);
和System.out.println("The area of the circle is... " + circle.getArea(Integer.parseInt(area)));
这里的圆是类圆的对象
Circle circle = new Circle(radius) //Note: circle cannot be accessed from main function create another object for class circle again in main
它应该有帮助
添加回答
举报