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

Math クラスにアクセスできないのはなぜですか?

4

2 に答える 2

21

ファイルが Math.java という名前の場合 (そのように見えます)、というクラスが含まれている必要Mathがあります。この投稿を見てください。Java は というファイルを探していますが、このファイルには、あなたのケースで./Math.java呼び出されたクラスが含まれているようです。Math

Math実際に標準の Javaパッケージを使用しようとしている場合はMath.java、組み込みのものと競合するため、プロジェクト ディレクトリで名前が付けられているものをすべて削除するか、完全修飾インポートを使用して標準にアクセスする必要があります。 1: import java.lang.Math;. 通常、パッケージからのインポートjava.langは必要ありませんが、競合する名前がある場合は、完全修飾インポートを使用して明示的にアクセスすることが重要です。

本当に、すべてを名前付きパッケージに入れ、とにかく完全修飾インポートを常に使用する習慣を身につけるのが最善です。多くの手間を省くことができます。

于 2013-05-22T13:47:56.807 に答える
15

Math.javaおそらく誤ってソース コード ディレクトリに残したファイルを削除します。このファイルは、JDK のjava.lang.Mathクラスの通常の使用を妨げています。

また、デフォルト パッケージでクラスを定義することは悪い習慣であり、途中でさまざまな問題が発生することにも注意してください。ソース コードを名前付きパッケージに入れます。

于 2013-05-22T13:52:49.287 に答える