考虑在同一个包中声明的以下两个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);
}
}
答案 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
标识符。