【问题标题】:Why won't my Test class pull the main class correctly? [closed]为什么我的测试类不能正确拉动主类? [关闭]
【发布时间】:2014-11-08 20:29:22
【问题描述】:

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


}

【问题讨论】:

  • 没有正确拉到新班级是什么意思?
  • 我注意到你有两个 main() 方法。你想做什么?
  • 我必须创建一个类 Circle 来命名 3 个字段,并使用 setRadius getRadius 将半径设置为 1,并使用 setRadius 计算直径和面积。现在我必须创建一个 TestCircle 类来完成我上面提到的操作。
  • 我认为我必须将计算从我的第一堂课拉到新的测试课
  • 拉方法不是任何人都懂的软件术语,但你!

标签: java inheritance constructor


【解决方案1】:

这里有一些指针:

在创建对象时使用构造函数设置实例变量的初始值。如果需要,使用 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();

   }


}

【讨论】:

    【解决方案2】:

    我认为您想在您的 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();
      }
    }
    

    编辑

    您创建了一个circleA 和一个circleB,但您的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();
    }
    

    【讨论】:

    • 谢谢!当我尝试这个时,我只得到一个圆圈 A 的输出,并且不知道如何将一个圆圈命名为低值,而将第二个圆圈命名为大值。
    • 我在 setRadius 上的 void 类型不允许 system.out.println
    • @Soccer82 你不能将void 传递给println,你也不需要。您确实需要修改setRadius,以便您可以通过半径。
    • 谢谢!我现在可以使用设置半径;但仍在显示 CircleA
    • @Soccer82 再次阅读我的答案。你打电话给circleA.display()。如果你也想说出名字,那就是System.out.print("circleA: ");,然后是circleA.display()
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 2013-05-07
    • 2021-03-13
    • 2012-11-21
    • 2012-12-31
    • 2015-02-03
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多