考虑在同一个程序包中声明的以下两个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);
}
}
最佳答案
第一个问题:rad
是private
,您将无法从测试类中访问它。了解有关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所述:
由于
CircleTest
是public
,因此必须位于名为CircleTest.java
的文件中才能进行编译。或删除public
标识符。