public class CirclTest{
public static void main(String[] args){
Circle first=new Circle('R',3.0);
Circle first=new Circle('R',3.0);
Circle second=new Circle();
System.out.println("first's radius is " + first.getRadius());
System.out.println("first's area is " + first.getArea());
System.out.println("second's area is " + second.getArea());
if(first.hasLargerAreaThan(20)){
System.out.println("first's area is larger than 20. ");
}else{
System.out.println("first's area is smaller than 20. ");
}
}
}
所以我应该写一个圆圈课。这就是我所做的。
public class Circle{
private double radius=0.0;
private double area=0.0;
private char colour=' ';
public Circle(char colour,double radius){
this.colour=colour;
this.radius=radius;
}
public Circle(){
radius=0;
colour='B';
}
public char getColour(){
return colour;
}
public double getRadius(){
return radius;
}
public double getArea(){
return area;
}
}
我实际上对如何编写类感到困惑。就像我知道我需要通过私有等初始化变量。我需要构建一个构造函数但不知何故上面的代码不起作用。测试方法是正确的。但是我必须用它来实现我的课程。
答案 0 :(得分:0)
您正在声明变量
Circle first
两次。如果要重新分配其值,只需执行
first=new Circle('R',3.0);
在if语句中你正在调用
first.hasLargerAreaThan(20)
当我没有在你的班级中看到这样的方法时。
答案 1 :(得分:0)
请问你的意思是什么代码不起作用?如果您指的是未正确计算的区域且始终为0,则会发生这种情况,因为您的默认值与0相同,并且从不计算它。您可能希望将计算逻辑放在getArea()方法中。
答案 2 :(得分:0)
首先,如果需要,您将需要使用测试框架来断言代码的有效性。查看JUnit。
如果区域大于某个值的示例断言将被写为这样。
@Test
public void assertArea_calculatedProperly() {
//given that the radius is 5,
Circle c = new Circle('R', 5);
//when I get the area...
double result = c.getArea();
//then I expect it to be around 78.53981634.
assertTrue(result < 78.6);
assertTrue(result > 78.5);
}
其次,你的getArea
实际上没有获得该区域。您的代码中没有任何内容可以检索,然后计算区域。你甚至没有使用Math.PI
。我建议你实现它 - 但是使用单元测试作为一种有效的方式来断言你将得到适当的回复。