为什么我的“Circle”程序不会运行?

时间:2014-11-08 09:18:52

标签: java constructor

我已经做了好几天了,无法让程序运行。我必须命名3个字段,并使用setRadius()getRadius()。我还必须设置和计算setRadius()中的所有字段。起初我没有主,但一直都是错误的。我包括main,程序编译,但不会运行。请帮忙。

public class Circle
{
public static void main(String[] args)
{
   Circle myCircle = new Circle();

}
double radius;
double diameter;
double area;

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

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

}
public double getRadius()
{
    return radius;
}
public void display()
{
   System.out.println("The radius is " + radius);
   System.out.println("The diameter is " + diameter);
   System.out.println("The area is " + area);
}

}

4 个答案:

答案 0 :(得分:1)

就像有人在评论中说的那样,你的构造函数是无效的。 你的setRadius shoud得到一个参数 并在施工后调用显示

public class Circle {
public static void main(String[] args) {
    Circle myCircle = new Circle();
    myCircle.display();
}

double radius;
double diameter;
double area;

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

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

}

public double getRadius() {
    return radius;
}

public void display() {
    System.out.println("The radius is " + radius);
    System.out.println("The diameter is " + diameter);
    System.out.println("The area is " + area);
}

}

答案 1 :(得分:0)

myCircle.display();添加到main。

答案 2 :(得分:0)

Main是您程序的入口点,无论您在其中包含什么内容都将运行。你的程序正在运行它只是没有做任何事情(除了创建一个圆圈)。如果您希望程序显示这些消息,则需要在main。中调用display()

public static void main(String[] args)
{
   Circle myCircle = new Circle();
   myCircle.display();
}

答案 3 :(得分:0)

有效。但只有你在这里做的是创造新的对象。 为您的对象添加更多操作。

public static void main(String[] args)
{
    Circle myCircle = new Circle();
    myCircle.setRadius();
    myCircle.display();
}

UPD:你也有一些错误:

  1. diametr = 2 * radius(not radius * radius)

  2. public void Circle() - 是一个函数,而不是构造函数。使用与构造函数同名的方法是不好的做法。所以如果你想要它是一个构造函数删除'void'

  3. 如果你像这样使用setRadius方法会更灵活:

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