为什么这个CircleTest类不能编译

时间:2016-05-17 13:59:45

标签: java class compiler-errors

考虑在同一个包中声明的以下两个Java类:为什么CircleTest类不能编译,可以进行哪些更改以使其工作以及更改的原因。请帮帮我,谢谢:)。

编译时的错误是:它表示必须将CircleTest类定义为自己的文件,不解析circumf不是字段,Circle.rad不可见,PI未解析为变量。

public class Circle {
   private double rad;
   static int count;
   public Circle(double radius) {
      this.rad = radius;
      count++;
   }
   double circumf() { return 2 * PI * rad; }
}
public class CircleTest {
   public static void main(String[] args) {
      Circle diskA = new Circle(5);
      Circle diskB = new Circle(3);
      Circle diskC = diskA;
      System.out.println("Circum A:" + diskA.circumf);
      System.out.println("Area B:" + PI*diskB.rad*diskB.rad);
   }
}

1 个答案:

答案 0 :(得分:2)

第一个问题:

public class Ball { private int x, y, r; private Color c = Color.YELLOW; public Ball (int x, int y, int r) { this.x = x; this.y = y; this.r = r; } // draws the ball public void draw (Graphics g) { g.setColor(c); g.fillOval(x-r, y-r, 2*r, 2*r); } rad您无法从测试类中访问它。阅读access modifier

将其更改为: private;

或更好,将其保密并使用getter方法:

public double rad

第二个问题:

private double rad;

public double getRad() {
  return rad;
}

你试图调用一个方法,所以这应该是:

System.out.println("Circum A:" + diskA.circumf);

第三个问题:

添加System.out.println("Circum A:" + diskA.circumf()); 以使用static import

PI

第四个问题:

正如@ kevin-esche所说:

由于import static java.lang.Math.PI; CircleTest,因此必须位于名为public的文件中才能进行编译。或者删除CircleTest.java标识符。