为什么循环无限?

时间:2012-11-17 15:48:13

标签: java for-loop infinite

我正在尝试通过for循环,它就像任何其他for循环一样,但它似乎是无限的;我一定是在做一些愚蠢的事。有谁能看到它?

double x;
for(x = -1; x < 1; x+=2/20) {
    double y = b * Math.sqrt(1-Math.pow(x-FocusToCenter, 2));
    System.out.println("X:"+x+" Y: "+roundFourDecimal(y));
}

如果改变x + = 2/20,到x + = 0.1则完全没问题。

3 个答案:

答案 0 :(得分:6)

2/20评估的内容是什么?我怀疑因为它们都是整数,所以你得到0,因此根本不会增加x

尝试将它们表达为双打,例如2.0 / 20.0

答案 1 :(得分:2)

整数部门,2/20 = 0

即。 x=x+0

因此迭代器没有被修改,因此无限循环

要完成您想要做的工作,请尝试2.0/20.0

答案 2 :(得分:1)

2/20是整数算术运算,因此结果为零。基本上你没有在循环中递增x。为了将其作为浮动分区进行处理,您需要这样:

2.0/20

((double)2) / 20;