2016-05-17 48 views
-2

請考慮在同一個包中聲明的以下兩個Java類:爲什麼CircleTest類不能編譯以及可以進行哪些更改以使其工作以及更改的原因。請幫助我,謝謝:)。爲什麼這個CircleTest類不會編譯

編譯時的錯誤是:它說CircleTest類必須定義它自己的文件,不解決環節不是字段,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

(我可以看到至少三個錯誤,但我希望它們基於錯誤消息是顯而易見的......) –

+0

有多個錯誤。你正像一個變量一樣訪問'circumf',但這是一種方法。 「PI」是一個不存在的變量。 'rad'是私人的,但直接接受。 – SomeJavaGuy

回答

2

第一個問題:

radprivate,你將無法從您的測試類訪問它。閱讀關於access modifier

將其更改爲類似於: public double rad;

或更好,但離開它私人和使用getter方法:

private double rad; 

public double getRad() { 
    return rad; 
} 

問題二:

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

你試圖調用一個方法所以這應該是:

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

第三問題em:

添加一個static import使用PI

import static java.lang.Math.PI; 

第四個問題:

正如@凱文 - esche提到:

由於CircleTestpublic它必須是在爲了能夠編譯名爲CircleTest.java文件。或者刪除public標識。

+0

有一件事是不存在的,因爲'CircleTest'是公開的,它必須位於一個名爲'CircleTest.java'的文件中才能編譯。或者刪除公共標識符。 – SomeJavaGuy

+0

你說得對。錯過了那一個。我會馬上添加它。謝謝。 – Diyarbakir

+0

@Diyarbakir KevinEsche哇,非常感謝你們,現在對我來說很有意義:)。 –