2

私の評価は、プログラムを実行することでした。手順は以下のとおりです。

  1. 円の半径は 1.0 にする必要があります。
  2. 算術式で適切な Math クラス メソッドを使用します。
  3. x 座標の値は、最初のテスト中に 0.1 ずつ変化するはずです。プログラムが動作するようになったら、コードをわずかに変更するだけで、増分が 0.01 または 0.001 になることを確認します。
  4. きれいにフォーマットされた表に情報を表示します。(期待される出力を参照してください。) フォーマット グリッドを使用して、出力のレイアウトを開発する時間を節約します。背景: 代数の授業で、円の半径と x または y のいずれかの値がわかっている場合、ピタゴラスの定理を使用して x または y 座標を決定できることを思い出してください。半径が 1 の円を扱っていると仮定します。x の連続する値を反復処理すると、対応する y の値を計算できます。算術式の設定には、必ず Math クラスのメソッドを使用してください。

これはサークルです: http://i.stack.imgur.com/NypKz.png

以下のプログラムを行いました。

public class PointsOnACircleV1 {
    public static void main(String[ ] args)
    {
   double[] x1 = { 1.0, 0.90, 0.80, 0.70, 0.60, 0.50, 0.40, 0.30, 0.20,
           0.10, 0.00, -0.10, -0.20, -0.30, -0.40, -0.50, -0.60, -0.70,
           -0.80, -0.90, -1.00 };

double r = 1;

    System.out.println("      Points on a Circle of Radius 1.0");
    System.out.println("       x1        y1        x2        y2");
    System.out.println("---------------------------------------------");

for (int i = 0; i < x1.length; i++) {
    double y1 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));
    double y2 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));
    System.out.printf("%10.2f%10.2f%10.2f%10.2f%n", x1[i], y1, x1[i], y2);
}
    System.out.println("");
}
}

出力は次のようになります: http://i.stack.imgur.com/pywwJ.png

私は別の出力を得ています。私の出力はこのようになっています。

      Points on a Circle of Radius 1.0
       x1        y1        x2        y2
---------------------------------------------
      1.00      0.00      1.00      0.00
      0.90      0.44      0.90      0.44
      0.80      0.60      0.80      0.60
      0.70      0.71      0.70      0.71
      0.60      0.80      0.60      0.80
      0.50      0.87      0.50      0.87
      0.40      0.92      0.40      0.92
      0.30      0.95      0.30      0.95
      0.20      0.98      0.20      0.98
      0.10      0.99      0.10      0.99
      0.00      1.00      0.00      1.00
     -0.10      0.99     -0.10      0.99
     -0.20      0.98     -0.20      0.98
     -0.30      0.95     -0.30      0.95
     -0.40      0.92     -0.40      0.92
     -0.50      0.87     -0.50      0.87
     -0.60      0.80     -0.60      0.80
     -0.70      0.71     -0.70      0.71
     -0.80      0.60     -0.80      0.60
     -0.90      0.44     -0.90      0.44
     -1.00      0.00     -1.00      0.00
4

3 に答える 3

1

他の回答しかない場合は -0.00 が出力されるため、if ステートメントも必要です。

    double y1 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));
    double y2 = 0.00;
    if (y1 != 0.00)
    {
        y2 = (-y1);
    }
于 2013-10-14T14:03:53.703 に答える
1

コードが同一であるため、y1 と y2 は同じ値であると計算されました。

double y1 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));
double y2 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));

結果から、y2 の値は y1 の否定であるように思われます。代わりにこれを試してください:

double y1 = Math.sqrt(Math.pow(r, 2) - Math.pow(x1[i], 2));
double y2 = -y1;
于 2012-12-26T01:52:45.560 に答える