Java对象为计算变量返回零

时间:2013-09-16 00:24:13

标签: java oop

这是我在这里的第一个问题,我对编程很新,所以请耐心等待。

我正在学习java课程,在我目前的作业中,我必须创建一个圆形的三个实例,计算它们的直径和面积,然后打印这些值。前两个实例应该通过setRadius方法设置半径,而第三个实例应该保留基于半径1的默认计算。

编辑:问题是这样的:我使用setRadius方法的前两个对象返回了正确的值,但第三个用于返回构造函数的默认值,而是返回全零。

这是代码,提前谢谢!

//this class implements the Circle class
public class TestCircle
{
    public static void main(String[] args)
    {
        Circle Circle1 = new Circle();
        Circle Circle2 = new Circle();
        Circle Circle3 = new Circle();

        Circle1.setRadius(2);
        Circle2.setRadius(10);

        Circle1.display();
        Circle2.display();
        Circle3.display();
    }
}


import java.lang.Math.*;
public class Circle
{
double radius;
double diameter;
double area;

    public void Circle()
    {
        radius = 1;
        diameter = radius * 2;
        area = (radius * radius) * Math.PI;
    }

    public void setRadius(double rad)
    {
        this.radius = rad;
        diameter = radius * 2;
        area = (radius * radius) * Math.PI;
    }


    public void display()
    {
        System.out.println("Radius: " + radius);
        System.out.println("Diameter: " + diameter);
        System.out.println("Area: " + area);
    }
}

1 个答案:

答案 0 :(得分:4)

public void Circle()

只是一个void返回类型的方法。对于构造函数,您需要

public Circle() // notice there is no return type

因为您实际上没有提供构造函数,所以

Circle Circle1 = new Circle();
Circle Circle2 = new Circle();
Circle Circle3 = new Circle();

使用编译器提供的默认构造函数。它有一个空体,因此默认情况下字段值都初始化为0

由于您只在其中两个上拨打setRadius(),另一个只会显示0的值。

阅读构造函数here


Java命名约定规定变量名称应以小写字母开头,并遵循camelCase格式。您可以对此主题进行进一步阅读here