2009-03-10 19 views
2

私は、偽/偽の条件に対していくつかの式を自動的にテストするための小さなJavaアプリケーションを作成しました。シンボルが見つかりません

jGRASPとjavacコマンドの両方で2つのコンパイラエラーが発生しています。

コードは次のとおりです。

public class MathTest { 
    public static void main(String[] args) { 

     int x = 10; 
     int y = 20; 
     int z = 30; 
     String string1 = "six"; 
     String string2 = "six"; 

     if (x < 10 || x > 10) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (z - y == x && Math.abs(y - z) == z) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (x < 10 && x < 10) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (string1.equals(string2)) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 
     if (x > y || y > x) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (!(x < y + z) || !(x + 10 <= 20)) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (string1 == string2) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

    } 
} 

エラーメッセージは次のとおりです。私は間違って何をやっている

 
    MathTest.java:14: cannot find symbol 
    symbol : method abs(int) 
    location: class Math 
    if(z - y == x && Math.abs(y - z) == z) 
        ^
    ./Math.java:13: cannot find symbol 
    symbol : method abs(int) 
    location: class Math 
    if(z - y == x && Math.abs(y - z) == z) 
        ^
    2 errors 

私のインストラクターやソルトレーク・コミュニティ・カレッジの管理者がこの質問に遭遇することはほとんどありませんが、私の意図をはっきりさせてください。この質問は、学問的正直の最大の精神で掲示されています。私はこの質問をして、一般的なアドバイスを求めて、Javaプログラミング言語を使う正しい方法を理解する助けを求める。私は決して他の人の作品を使って、自分の作品として表現しています。私は私の理解の一般的な援助としてここに提供された答えを使用します。私は自分のすべての仕事をして、私の質問に答えた人々が提供する仕事をコピーしない。

+0

一般に、角かっこを使用するよりも、ブラケットを使用する方が良いです。else(... else if ...)else ... – OscarRyz

答えて

5

あなたはあなたのプログラムは、JavaのMath.abs(あなたが書いた数学のクラスの代わりに、ABSの()メソッド)を使用する場合は、あなたが言うことができます。

if(z - y == x && java.lang.Math.abs(y - z) == z) 

を...非常にされていませんかなり。一般的には、クラス名をjava.lang(または実際にはjava.anything)と同じ名前にしないでください。

+0

java.langに組み込まれたMathクラスを使用することを私の意図していました。私は誤ってjava.lang.Mathを呼び出すのではなく、私が作っていないクラスを呼び出したと思います。私が変更を加えたとき、エラーは消えました。ありがとうございました。 –

6

Mathクラスがあり、abs()メソッドを使用しようとしています。

質問:この機能を提供するのはあなたの意図ですか、またはjava.lang.Mathのものを使用しようとしていますか?

最初は、その関数を宣言していることを確認する必要があります。

次に、正しいパラメータタイプを使用していることを確認する必要があります。 Mathを参照してください。

あなたのMathクラスにはabsメソッドがありますか?

あなたのMathクラスは、言語の中核となるMathクラスをシャドーイングしているようです。

あなたのMathクラスがロードされると、ABSの方法は、(それゆえ「シンボルが見つかりません」というメッセージ)コンパイラの出力で

+0

java.langに組み込まれたMathクラスを使用することを私の意図していました。 –

3

見つかりませんでした、あなたが持っている:

./Math.java:13: cannot find symbol 

それはあなたのように見えますあなた自身のMathクラスを書き込もうとしていて、それは組み込みのjava.lang.Mathをシャドーイングしています。

Mathという独自のクラスを持っている必要がありますか?そうでない場合は、Math.javaを削除してもう一度コンパイルしてみてください。 の場合にはMath.javaが必要です(たとえば、MyMath.java、内側にpublic class MyMathと定義されているように)。

+0

自分でMathクラスを作成するつもりはありませんでした。完全修飾クラス名を使用したとき、エラーは消えました。 –

+0

ニース。それでMath.javaを取得しているところのDunnoですが、あなたのプロジェクトには良い運があります! – tgamblin

関連する問題