2016-05-17 10 views
-2

同じパッケージで宣言されている次の2つのJavaクラスを考慮してください:CircleTestクラスがコンパイルされない理由と、助けてください、ありがとうございました:)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); 
    } 
} 
+0

おそらくあなたはコンパイルエラーがあります。投稿し、あなたがそれらについて理解していないことを説明してください。 –

+0

(私は少なくとも3つのエラーを見ることができますが、私はそれらがエラーメッセージに基づいて明らかであることを期待しています...) –

+0

複数のエラーがあります。あなたは変数のように 'circumf'にアクセスしていますが、それはメソッドです。 'PI'は存在しない変数です。 'rad'はプライベートですが、直接アクセスします。 – SomeJavaGuy

答えて

2

まず問題:

radは、あなたのテストクラスからアクセスすることはできませんprivateです。 access modifierについて読む

次のように変更します。 public double rad;ので、これがあるべき

System.out.println("Circum A:" + diskA.circumf); 

あなたがメソッドを呼び出ししようとしている:

またはより良いまだ、民間のそれを残すとgetterメソッドを使用します。

private double rad; 

public double getRad() { 
    return rad; 
} 

第二の問題を

System.out.println("Circum A:" + diskA.circumf()); 

第3のprobl em:

static importを使用してPIを追加します。

import static java.lang.Math.PI; 

第4の問題点:

言及@ケビン・escheとして:

CircleTestので、それがコンパイルできるようにするために、CircleTest.javaという名前のファイルにしておく必要がありpublicです。または、識別番号publicを削除します。

+0

'CircleTest'はパブリックなので、' CircleTest.java'という名前のファイルにコンパイルできなければなりません。または、公開者識別子を削除する。 – SomeJavaGuy

+0

あなたはそうです。それを逃した。私はすぐにそれを追加します。ありがとう。 – Diyarbakir

+0

@Diyarbakir KevinEscheうわー、あまりにもみんなありがとう、それは今私に意味がある:)。 –

関連する問題