考虑在同一个程序包中声明的以下两个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);
   }
}

最佳答案

第一个问题:
radprivate,您将无法从测试类中访问它。了解有关access modifier的信息。

将其更改为:public double rad;

或更妙的是,将其保留为私有(private)并使用getter方法:

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
import static java.lang.Math.PI;

第四个问题:

正如@ kevin-esche所述:

由于CircleTestpublic,因此必须位于名为CircleTest.java的文件中才能进行编译。或删除public标识符。

09-10 10:01