2014-06-11 19 views
0

有一類叫做廣場公共類方形的Java returnin全部爲「0」

public class Square 
{ 
private double side; 

public Square(double side) 
{ 
    side = side; 
} 

public double getSide() 
{ 
    return side; 
} 

public void setSide(double s) 
{ 
    side = s; 
} 

public double getArea() 
{ 
    return side * side; 
} 

public double getPerimeter() 
{ 
    return side * 4; 
} 

另一個程序中聲明的廣場和傳遞的值4.0構造函數。然後使用該類的方法來打印Square對象的邊長,面積和周長。以下是該計劃推出的內容。

長度側的:0.0 面積:0.0 周長:0.0

我認爲問題是 「私人雙面;」線。但我並不確定。任何其他花絮都可以投入?

+3

'this.side =側;'否則你分配局部變量本身,而不是實例變量。 – rgettman

+0

'side = side'是否不會從編譯器生成警告? –

回答

4

在構造函數中,參數side將是一個局部變量。如果你想參考實例變量side,使用this關鍵字

public Square(double side) 
{ 
    this.side = side; 
} 

Java Tutorials

在實例方法或構造,this是對一個參考當前對象 - 其方法或構造函數被調用的對象....

1

你需要做的是這樣的

public Square(double side) { 
    this.side = side; 
} 

在代碼中,邊=側面只是分配方本身。由於它默認等於零,它只是將零賦值給它自己。

在構造函數中,side被創建爲一個私有變量。要訪問類中的「side」變量,您必須使用this.side。 「this」指的是類的實例,所以「this.side」告訴代碼改變變量的一邊,這是Square的一個變量。

1

其他答案是正確的。你應該使用this.side = side,儘管如果你重命名了其中的一個,你的代碼會更清晰。參數或內部值。這是你如何能做到這一點,讓用戶輕鬆代碼閱讀:

public class Square 
{ 
private double side; 

public Square(double aSide) 
{ 
    side = aSide; // in here it is obvious which one is the parameter and which one is the private variable 
} 

public double getSide() 
{ 
    return side; 
} 

public void setSide(double s) 
{ 
    side = s; 
} 

public double getArea() 
{ 
    return side * side; 
} 

public double getPerimeter() 
{ 
    return side * 4; 
} 
+0

這是我最喜歡的風格,因爲我真的不喜歡'this.'污染。 –