0

次のコードを実行しましたが、出力しようとすると、0.0 以外の値は出力されません。

public class RegularPolygon {
 private int numSides; //# sides
 private double sideLength; //side length 
 private double inscribedRadius; //radius of inscribed circle

 private void calcr(){
    inscribedRadius = .5 * sideLength * 1/Math.tan(Math.PI / numSides);
  }
}

public double getr(){
   return inscribedRadius;
}

主要:

RegularPolygon poly = new RegularPolygon(4, 10);
System.out.println(poly.getr());

出力:

0.0

コンストラクタ:

    public RegularPolygon(int newNumSides, double newSideLength){
    numSides = newNumSides;
    sideLength = newSideLength;
}

印刷を妨げているのは何ですか?

4

7 に答える 7

1
// Just edit your getr() function. You have to call calcr() function 

public double getr(){
    calcr();
    return inscribedRadius;

}
于 2013-10-10T01:34:48.730 に答える
1

コンストラクターが初期化されておらず、inscribedRadiusが呼び出されていないためcalcr()、 の値はinscribedRadius0 のままです。これは、インスタンスの初期化中にプリミティブ フィールドに割り当てられる既定値です。

RegularPolygon poly = new RegularPolygon(4, 10);
poly.calcr();
System.out.println(poly.getr());

RegularPolygonこれは、上記のコードがクラスで実行される場合にのみ可能です。あなたのメソッドはprivateそのクラスの外では見えないからです。その場合、calcr()内部的に呼び出すように設計をセットアップする必要があります。

于 2013-10-10T01:13:43.473 に答える
0

クラス RegularPolygon がインスタンス化されると、フィールド inscribeRadius に初期化された値を指定しないため、そのフィールド inscribeRadius は 0.0 として初期化されます。poly.getr() を呼び出す前に何もしないので、出力は 0.0 しかありません。

于 2013-10-10T01:16:22.973 に答える
0

これをRegularPolygonクラスに追加してみてください

public RegularPolygon(int numSides, double sideLength){
this.numSides=numSides;
this.sideLength=sideLength;

}

次に、calcr();

于 2013-10-10T01:12:07.527 に答える
0

コンストラクターを追加して、定義したフィールドの値を設定し、そのcalcr()中で関数を呼び出して、 の値を計算する必要がありますinscribedRadius。また、おそらく getr() をRegularPolygonクラス内に移動する必要があります。

例えば:

public class RegularPolygon {
  private int numSides; //# sides
  private double sideLength; //side length 
  private double inscribedRadius; //radius of inscribed circle

  public RegularPolygon(int numSides, double sideLength) {
    this.numSides = numSides;
    this.sideLength = sideLength;
    this.calcr();
  }

  private void calcr(){
    inscribedRadius = .5 * sideLength * 1/Math.tan(Math.PI / numSides);
  }

  public double getr(){
    return inscribedRadius;
  }
}

このコードの実行例については、http://ideone.com/lxcmlHを参照してください。

于 2013-10-10T01:12:51.863 に答える
0

コンストラクターを変更して半径を計算する

public RegularPolygon(int newNumSides, double newSideLength){
     numSides = newNumSides;
     sideLength = newSideLength;
     this.calcr();
}
于 2013-10-10T01:13:45.170 に答える
0

クラスにコンストラクターを追加しましたか?

追加しない場合

public RegularPolygon(int numSides, double sideLength){
this.numSides=numSides;
this.sideLength=sideLength;

}

そして電話する

poly.calcr();

値を出力する前。

変数を初期化しておらず、計算するメソッドも呼び出していないため、0.0 を取得していますinscribedRadius

int または double 変数を初期化していない場合、デフォルトの初期化は 0 になります0.0

于 2013-10-10T13:21:30.900 に答える