它应该计算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);
}
}
发布于 2014-10-31 05:56:54
行:for(double x = 0; x <= 1; x += (1 / 150))从0.0开始迭代,在1.0处结束,并在每次迭代后将0.0添加到x。
要使x递增1 / 150,必须将1 / 150更改为双精度值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这样的内容。在另一篇文章here中阅读更多关于这方面的内容。
你应该找到另一种方法来计算你的.计算。底线是;始终迭代非浮点数。
https://stackoverflow.com/questions/26663789
复制相似问题