2016-04-09 7 views
0

のように返ってきます。私の質問は簡単です。メソッドシェイプを実装し、球と円錐の半径、面積、体積を印刷しようとしています。今私は宿題の助けを求めているわけではないので、私のそばにいてください。なぜ私のダブルが私の意図した変数を出していないのかについてのちょっとした知識。Java OOP- doubleは0.

だから、現時点で私がやろうとしているすべては 『半径6.3の球「だけである必要があり

』「」+名+「半径」+ Rを印刷するにはtoStringメソッドを使用しています しかし、その代わりに、私は私のプログラムをHERESに私のコード

「半径0.0の球を」出して実行します。事前に

//Main Class  
public class CircleShape 
{ 
    String name; 
    double radius; 
    double area; 
    double volume; 

    CircleShape(){ 
    } 
     CircleShape(String n, double r, double a, double v) 
    { 
     name = n; 
     radius = r; 
     area = a; 
     volume = v; 
    } 
} 

//Extension 
public class SphereShape extends CircleShape 
{ 
    public String name; 
    public double r; 


    public SphereShape(String n, double r) 
    { 
     name = n; 
     radius = r; 
    } 

    public String getName(String name) 
    { 
     return name; 
    } 

    public void setName(String n) 
    { 
     name = n; 
    } 

    public double getRadius() 
    { 
     return radius; 
    } 

    public void setRadius(double r) 
    { 
    radius = r; 
    } 

    public String toString() 
    { 
    return "A " + name + " of radius " + r; 
} 


} 
//Driver/Tester 
public class CircleShapeTest extends CircleShape 
{ 

    public static void main(String[] args) 
    { 
     SphereShape sph = new SphereShape("sphere", 6.3); 


     System.out.println(sph); 

    } 
} 

おかげ

+0

コンパイル時にエラーが発生しません:/ – Georgie

答えて

0

あなたが設定されていませんクラスvar rの場合、radiusCircleShapeに設定していますが、このvarは使用しないでください。

変更 return "A " + name + " of radius " + r; return "A " + name + " of radius " + radiusへ。

+0

* Facepalm!ありがとうございました! @tobltobs – Georgie

0

サブクラスで同じフィールドを再宣言しないでください。 CircleShapeの4つの宣言は十分であり、SphereShapeによって設定およびアクセスすることができます。新しいフィールドを再作成する必要はなく、混乱し、バグが発生しました。

+0

ああ、良いアドバイス。ちょうどdupsを消去し、うまくコンパイルしました。 – Georgie

関連する問題