为什么我的测试类不能正确拉取主类?



感谢您的帮助。我已经编写了一个可以编译和运行的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());
   }

}

这里有一些指针:

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

也只是按照方法名称所说的去做。例如,在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();
   }

}

我认为您希望在Circle实例上调用display()。看起来像

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);
}

然后你可以像一样在main()中调用具有不同半径的setRadius

public static void main(String[] args)
{
  Circle circleA = new Circle();
  circleA.setRadius(2);
  circleA.display();
  Circle circleB = new Circle();
  circleB.setRadius(4);
  circleB.display();
}

最新更新