为什么我的Test类没有正确地拉出主类?

时间:2014-11-08 20:29:22

标签: java inheritance constructor

感谢您的帮助。我编写了一个可以编译和运行的Main类。我遇到的问题是我可以使用display方法运行Test类。(没有正确地拉到新类)我必须创建一个包含3个对象的Test类,其中包含一个小值,大值和保留值。我必须使用setRadius()方法。您可以提供的任何指导都非常有用。

public class Circle
{
   public static void main(String[] args)
   {
   //call constructor and method
      Circle myCircle = new Circle();
      myCircle.display();
   }
   //set fields
   double radius;
   double diameter;
   double area;
   //create constructor set radius & compute diameter and area.
   public Circle()
   {
       radius= 1;
       diameter = 2 * radius;
       area = Math.PI * (radius * radius);
   }
   //set radius, diameter, and area
   public void setRadius()
   {
      radius= 1;
      diameter = radius * radius;
      area = Math.PI * (radius * radius);
   }
  //return radius
   public double getRadius()
   {
      return radius;
   }
 //write display
   public void display()
   {
       System.out.println("The radius is " + radius);
       System.out.println("The diameter is " + diameter);
       System.out.println("The area is " + area);
   }

}






public class TestCircle 
{
   public static void main(String[] args)
   {


       Circle circleA = new Circle();
       circleA.setRadius();
       System.out.println("Circle A: " + circleA.setRadius());

        Circle circleB = new Circle();
       circleB.setRadius();
       System.out.println("Circle B: " + circlB.setRadius());
   }


}

2 个答案:

答案 0 :(得分:0)

这是一些指针:

使用构造函数在创建对象时设置实例变量的初始值。如果需要,使用set radius在创建后更改值。直径和面积是可以从半径导出的变量。我建议编写返回这些的方法。

也只是做方法名称所说的。例如,在setRadius中设置半径,没有别的。

public class Circle
{

   //set fields
   private double radius;

   //create constructor set radius & compute diameter and area.
   public Circle(double radius)
   {
       this.radius=radius;
   }
   //set radius
   public void setRadius(double radius)
   {
      this.radius = radius;
   }
   public double getDiameter()
   {
    return 2*radius;
   }

  //return radius
   public double getRadius()
   {
      return radius;
   }

   public double getArea()
   {
    return Math.PI * (radius * radius);
   }
 //write display
   public void display()
   {
       System.out.println("The radius is " + radius);
       System.out.println("The diameter is " + getDiameter());
       System.out.println("The area is " + getArea());
   }

}


public class TestCircle 
{
   public static void main(String[] args)
   {

        Circle circleA = new Circle(1.0);
        circleA.display();
        Circle circleB = new Circle(2.0);
        circleB.display();

   }


}

答案 1 :(得分:-1)

我想您想在display()个实例上致电Circle。这看起来像是,

public class TestCircle 
{
  public static void main(String[] args)
  {
    Circle circleA = new Circle();
    circleA.setRadius();
    // System.out.println("Circle A: " + circleA.setRadius());
    circleA.display();
    Circle circleB = new Circle();
    circleB.setRadius();
    // System.out.println("Circle B: " + circlB.setRadius());
    circleB.display();
  }
}

修改

您创建了circleAcircleB,但您的setRadius方法没有radius参数,您的数学似乎也已关闭。

public void setRadius(int radius)
{
  this.radius = radius;
  diameter = radius + radius; // <-- 2*radius (not radius*radius)
  area = Math.PI * (radius * radius);
}

然后,您可以在setRadius

中使用不同的半径来调用main()
public static void main(String[] args)
{
  Circle circleA = new Circle();
  circleA.setRadius(2);
  circleA.display();
  Circle circleB = new Circle();
  circleB.setRadius(4);
  circleB.display();
}