2009-05-03 9 views
1

でサークル関数が期待どおりに動作しないので、半径を設定するサークルクラスを作成し、半径、円周、面積を出力する必要があります。ただし、半径、半径、円周、 http://pastie.org/466414 が出ていませんでし-formattingJavaクラス

public class Circle 
{ 
    private double radius; 
    private double PI = 3.14159; 

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

    public double getRadius() 
    { 
      return radius; 
    } 

    public double getArea() 
    { 
      return PI * radius * radius; 
    } 

    public double getDiameter() 
    { 
      return 2 * radius; 
    } 

    public double getCircumference() 
    { 
      return 2 * PI * radius; 
    } 

} 

と相続人circledemo.java HERESに私のCircle.java 0.0とそれだけを示してもここ

まずI入力半径が、私はgetRadiusを呼び出し、円周、領域、ちょうど出力0.0

+0

おそらく、スペースではなくタブで字下げしたため、書式設定が正しく行われなかった可能性があります。 –

+2

学校の宿題じゃない? – Francis

+3

だから、それは何が間違って出力されますか? –

答えて

5

プログラムの実行を順を追って説明しましょう。まず、いくつかの変数を初期化して、Scannerオブジェクトを作成します。次に、whileループを入力します。そのループの中で、メインメニューを表示し、キーボードからの入力を読み取って円オブジェクトを新規作成し、受け取った入力を処理します。そして、あなたはflagfalseに設定されるまでそれを続けます。その場合、プログラムは終了します。

ここには何か不思議なことがありますか?

変数は宣言されたスコープの内部にのみ存在し、Circleオブジェクトはの中で whileループと宣言されました。 whileループのボディは、の1回の反復を表します。 whileループです。したがって、本質的にCircleオブジェクトは何度も何度も再作成されるため、setRadius()は効果がありません。

+2

あなたが{、 }、あなたはそれを残しています。 {}のペアの中で宣言されたものが、あなたが}に行くときに範囲外になることを意味します。私は少し単純すぎるかもしれないが、それはあなたに私が考える正しい考えを与える。 また、すべての{でインデントを増やし、それをすべて減らすことをお勧めします。 – MatrixFrog

+0

それはそれを表現する良い方法です。 – hbw

+0

申し訳ありません、問題を解決しました – Raptrex

1

whileループオブジェクトのインスタンス(つまり、Circle one = new Circle())の外側にコードを作成します。ループが繰り返されるたびに、オブジェクトは新しい状態(つまり新しい半径)で再作成されます。