1

这是我在这里的第一个问题,我对编程很陌生,所以请多多包涵。

我正在学习一个 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);
    }
}
4

1 回答 1

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.

在此处阅读构造函数。


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

于 2013-09-16T00:26:23.453 回答