繁体   English   中英

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

[英]Circle functions not behaving as expected in Java Class

所以我做了一个设置半径的圆类,应该输出半径,周长和面积。但是,如果我输入半径,半径,周长,面积就不会输出回来,它只是显示为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

让我们逐步地逐步执行程序。 首先,初始化一些变量,然后创建一个Scanner对象。 接下来,您进入while循环。 在while循环内,您将显示主菜单,从键盘读取输入, 创建一个新的Circle对象 ,然后处理收到的输入。 然后您继续执行操作,直到将flag设置为false为止,在这种情况下,程序将退出。

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

变量仅存在于声明范围内,而Circle对象声明 while循环内。 请记住,while循环的身体展示着while循环的 一个迭代 因此,从本质setRadius() ,一遍又一遍地重新创建了Circle对象,这就是setRadius()无效的原因。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM