9

我是第一次学习Java。我写了一个简单的程序:

public class Solver {
    public static void main(String[] args) {
        double angle = 1.5;
        double height = Math.sin(angle);
        System.out.print("The sine of " + angle + " is: ");
        System.out.println(height);
    }
}

当我尝试编译它时,我在终端中收到以下错误:

Solver.java:4: cannot access Math
bad class file: ./Math.java
file does not contain class Math
Please remove or make sure it appears in the correct subdirectory of the classpath.
        double height = Math.sin(angle);
                    ^
1 error

为什么我无法访问数学课程?

4

2 回答 2

21

如果一个文件名为 Math.java(它似乎是),它必须包含一个名为Math. 看看这个帖子。Java 正在寻找一个名为 的文件./Math.java,该文件似乎不包含Math在您的情况下名为的类。

如果您实际上是在尝试使用标准 JavaMath包,则需要删除Math.java项目目录中命名的任何内容,因为这会与内置包冲突,或者使用完全限定的导入来访问标准一:import java.lang.Math;java.lang通常不需要从包中导入,但如果您的名称有冲突,则使用完全限定的导入来显式访问它很重要。

确实,最好养成将所有内容放在命名包中并始终使用完全限定导入的习惯。你会为自己省去很多麻烦。

于 2013-05-22T13:47:56.807 回答
15

删除Math.java您可能无意中留在源代码目录中的文件。这个文件阻碍了JDKjava.lang.Math类的正常使用。

您还应该注意,在默认包中定义类是不好的做法,并且会在此过程中给您带来各种问题。将您的源代码放入一个命名包中。

于 2013-05-22T13:52:49.287 回答