0
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;
    }


    }

我实际上对如何编写一个类感到困惑。就像我知道我需要通过私有等初始化变量。我需要构建一个构造函数,但不知何故,上面的代码不起作用。测试方法是正确的。但我必须用它来实现我的课程。

4

3 回答 3

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. 我建议您实现这一点 - 但使用单元测试作为断言您将获得适当响应的有效方式。

于 2013-04-24T03:09:41.830 回答
0

您正在声明变量

Circle first

两次。如果要重新分配其值,只需执行

first=new Circle('R',3.0);

在你调用的 if 语句中

first.hasLargerAreaThan(20)

当我没有在您的班级中看到这样的方法时。

于 2013-04-24T02:57:56.960 回答
0

你能请你的代码不起作用的意思吗?如果您指的面积计算不正确并且始终为 0,则发生这种情况是因为您有一个与 0 相同的默认值并且从不计算它。您可能希望将计算逻辑放在 getArea() 方法中。

于 2013-04-24T02:58:05.760 回答