Circle函数在Java类中的行为不符合预期

时间:2009-05-03 03:19:32

标签: java class methods public

所以我创建了一个设置半径的圆类,并且应该输出半径,圆周和面积,但是,如果我输入半径,半径,圆周,面积不会输出回来,它只显示为0.0 继承我的Circle.java

public class Circle
{
    private double radius;
    private double PI = 3.14159;

    public void setRadius(double rad)
    {
            radius = rad;
    }

    public double getRadius()
    {
            return radius;
    }

    public double getArea()
    {
            return PI * radius * radius;
    }

    public double getDiameter()
    {
            return 2 * radius;
    }

    public double getCircumference()
    {
            return 2 * PI * radius;
    }

}

和heres circledemo.java http://pastie.org/466414 格式化并没有在这里出现

首先我输入半径,但是当我调用getRadius,周长,面积时,它只输出0.0

2 个答案:

答案 0 :(得分:5)

让我们一步一步地完成程序执行。首先,初始化一些变量,然后创建一个Scanner对象。接下来,输入while循环。在while循环中,显示主菜单,从键盘读取输入,创建新的Circle对象,然后处理您收到的输入。并且你一直这样做,直到flag设置为false,在这种情况下程序退出。

注意到这里有什么奇怪的事吗?

变量仅存在于声明的范围内,并且您的Circle对象在内部中声明为while循环。请记住,while循环的主体表示while循环的 一次迭代 。因此,基本上,您的Circle对象会反复重新创建,这就是setRadius()无效的原因。

答案 1 :(得分:1)

创建Circle对象实例(即代码Circle one = new Circle())while循环的OUTSIDE。循环的每次迭代都会导致使用新状态(即新半径)重新创建对象。