Javaクラスでサークル関数が期待どおりに動作しない
質問
そのため、半径を設定する円クラスを作成し、半径、円周、および面積を出力する必要がありますが、半径、半径、円周、面積を入力すると、出力されないため、ちょうど0.0と表示されます 私のCircle.java
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;
}
}
およびheres circledemo.java http://pastie.org/466414 -ここではフォーマットがうまくいきませんでした
最初に半径を入力しますが、getRadius、円周、面積を呼び出すと、単に0.0を出力します
解決
ステップごとにプログラムの実行を見ていきましょう。最初に、いくつかの変数を初期化してからScannerオブジェクトを作成します。次に、 while
ループに入ります。そのwhileループ内で、メインメニューを表示し、キーボードから入力を読み取り、新しいCircleオブジェクトを作成して、受け取った入力を処理します。そして、 flag
が false
に設定されるまでそれを続けます。この場合、プログラムは終了します。
ここで何かおかしいことに気付きましたか?
変数は宣言されたスコープ内にのみ存在し、Circleオブジェクトはwhileループの内部で宣言されました。 whileループの本体は、whileループの 1回の繰り返し を表します。したがって、基本的に、Circleオブジェクトは何度も再作成されるため、 setRadius()
は効果がありません。
他のヒント
Circleオブジェクトインスタンスを作成します(つまり、コードCircle one = new Circle())whileループの外側です。ループが繰り返されるたびに、オブジェクトは新しい状態(つまり、新しい半径)で再作成されます。