0

它应该计算 y 轴,然后每次在不同的位置绘制一条小线段,并创建保龄球瓶的轮廓。x 值永远不会改变,所以它不会绘制任何东西。黑色实心圆圈只是为了确保它确实在绘制。

import java.util.Scanner;
public class test{
  public static void main(String args[])
  {
    double a0 = 1.27731344;
    double a1 = .85418707;
    double a2 = .032282353;
    double a3 = .127018447;
    double a4 = (-5.1957538)*(Math.pow(10,-2));
    double a5 = (6.718114)*(Math.pow(10,-3));
    double a6 = (-3.61828)*(Math.pow(10,-4));
    double a7 = (7.025)*(Math.pow(10,-6));  
    
    for(int i=0;i<=150;i++){
      for(double x=0;x<=1;x+=(1/150)){
      double x2 = x + (1/150);
      double y = Math.sqrt((a0)+(a1*x)+(a2*x)+(a3*x)+(a4*x)+(a5*x)+(a6*x)+(a7*x));
      StdDraw.line(x,y,x2,y);
      System.out.println(x+" "+y+" "+x2);
      }
     
  }StdDraw.filledCircle(.5,.5,.25);
 } 
}

4

1 回答 1

0

行:for(double x = 0; x <= 1; x += (1 / 150))从 0.0 开始迭代,以 1.0 结束,每次迭代后将 0.0 添加到 x。

要将 x 增加1 / 150,您必须更改1 / 150为 double 值1.0 / 150

所以for循环变成了for(double x = 0; x <= 1; x += (1.0 / 150))

然而,由于浮点数的行为方式,迭代双精度是非常糟糕的做法。例如下面的代码:

double var = 1.7;
var -= 0.1;
System.out.println(var);

可能会打印类似1.6000007. 在此处的另一篇文章中阅读有关此内容的更多信息。

您应该找到另一种方法来计算您的...计算。底线是; 总是迭代非浮点数。

于 2014-10-30T21:56:54.167 回答