java - 为什么这个 CircleTest 类不能编译

标签 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);
   }
}

最佳答案

第一个问题:
radprivate您将无法从您的测试类(class)中访问它。阅读 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标识符。

关于java - 为什么这个 CircleTest 类不能编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278313/

相关文章:

java - 如何使用JRE部署JavaFX 11 Desktop应用程序

c++ - g++ 的 ifstream 错误,但使用 Visual Studio 编译

java - 如何在 Java 小程序中打开模态对话框?

java - 我的 Android 应用程序找不到 XML 文件中声明的按钮

C#避免为接口(interface)属性重复代码

java - 如何从 Java 类中的另一个方法调用我的方法?

c++ - 在Visual Studio项目中包含OpenCV时,为什么我的代码无法编译?

gcc - 从源代码编译miniupnpc

java - Android:无法执行此操作,因为连接池已关闭

objective-c - Xcode中类之间的简单变量传递