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

您已经计算出 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 回答
1

它还应该有一个 if 语句,因为只有另一个答案会给出 -0.00 的输出。

    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 回答
0

避免 -0.00 的更好方法是

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

这将节省空间并更快地运行

于 2016-05-18T14:45:23.877 回答