1.修改第一个构造函数以计算直径和面积。
2.将第二个构造函数修改为setRadius并计算区域而不调用setRadius
在课堂上制作两个新方法
我。一个findArea
II。 findDiameter。
修改testcircle以适应变化。
public class Circle
{
private double radius, area, diameter;
public Circle()
{
radius = 1;
diameter = radius * 2;
area = Math.PI * radius * radius;
}
public Circle(double myradius)
{
myradius = radius;
area = Math.PI * radius * radius;
}
public void setRadius(double aRadius)
{
this.radius = aRadius;
diameter = radius * 2;
area = Math.PI * radius * radius;
}
public void CalArea(double aArea)
{
area = Math.PI * radius * radius;
}
public void CalDiameter(double aDiameter)
{
diameter = radius * 2;
}
public double getRadius()
{
return radius;
}
public double getDiameter()
{
return diameter;
}
public double getArea()
{
return area;
}
}
public class TestCircle {
public static void main(String[] args)
{
Circle circle1; //Declaring an object(instance) of the class Circle.
double myRadius, myDiameter, myArea;
circle1 = new Circle();
myRadius = circle1.getRadius();
System.out.println(myRadius);
circle1.setRadius(5);
myRadius = circle1.getRadius();
System.out.println(myRadius);
myDiameter = circle1.getDiameter();
System.out.println(myDiameter);
myArea = circle1.getArea();
System.out.println(myArea);
Circle circle2;
circle2 = new Circle(2.5);
myRadius = circle2.getRadius();
System.out.println(myRadius);
myDiameter = circle2.getDiameter();
System.out.println(myDiameter);
myArea = circle2.getArea();
System.out.println(myArea);
}
}
我完成了第一项任务,但是在没有调用setRadius的情况下计算区域对我来说似乎有点棘手,或者我以错误的方式进行操作。非常感谢帮助/建议。
更新
玩弄它我认为我发现了我的问题
public class Circle
{
private double radius, area, diameter;
public Circle()
{
radius = 1;
diameter = radius * 2;
area = Math.PI * radius * radius;
}
public Circle(double myradius)
{
this.radius = myradius;
}
public void setRadius(double aRadius)
{
this.radius = aRadius;
diameter = radius * 2;
area = Math.PI * radius * radius;
}
public double findDiameter()
{
return radius*2;
}
public double findArea()
{
return Math.PI * radius * radius;
}
public double getRadius()
{
return radius;
}
public double getDiameter()
{
return diameter;
}
public double getArea()
{
return area;
}
}
然后我对主要的
进行了必要的修改答案 0 :(得分:0)
这个家庭作业练习意味着教你关于某个对象的状态,以及如何避免冗余。
我认为:目标是
圆圈有一个自由属性(半径)和两个派生属性(直径和面积),可以在半径已知时随时计算。
这意味着您可以只存储半径,并实现findArea
/ findDiameter
方法,以便从半径计算结果,然后返回:
public double findDiameter() {
return radius*2;
}
public double findArea() {
return Math.PI * radius * radius;
}
注意(命名约定):前缀get
表示可以本地以及廉价方式访问该值。当计算或加载该值很昂贵时,请使用不同的前缀(这样您通常会在使用相同值时了解成本,并可将其存储为中间结果)。这就是为什么在这个例子中写入的方法以find
为前缀(虽然我个人使用不同的前缀,看起来像是通过搜索来检索数据,并且在这里的具体案例我认为计算方法足够便宜,可以使用get
前缀。