为什么我的程序不能访问Java中的数学方法?

时间:2013-05-22 13:46:23

标签: java class math

我第一次学习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

为什么我无法访问Math类?

2 个答案:

答案 0 :(得分:21)

如果文件名为Math.java(它似乎是),则必须包含一个名为Math的类。看看this post。 Java正在寻找一个名为./Math.java的文件,在您的案例中,该文件似乎不包含名为Math的类。

如果您实际上尝试使用标准Java Math程序包,则需要删除项目目录中名为Math.java的任何内容,因为这会与内置程序冲突,或者使用完全限定的导入来访问标准的导入:import java.lang.Math;。通常不需要java.lang包中的导入,但如果您的名称有冲突,则必须使用完全限定的导入来明确访问它。

真的,最好养成putting everything in a named package的习惯,并始终使用完全合格的导入。你会省去很多麻烦。

答案 1 :(得分:15)

删除您可能无意中遗留在源代码目录中的文件Math.java。此文件阻止正常使用JDK的java.lang.Math类。

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