为什么这是java中的无限循环?

时间:2017-04-17 08:31:01

标签: java

我不能使用任何其他数学符号而不是++ - > < =我无法弄清楚为什么这是一个无限循环。

 while (d < n)
    {

        System.out.print(d + "  ");
        for (count = 0 ; count < d ; count++)
        {
        d++;
        }
        for (count = d; count > 0; count--)
        {
        }
    }

3 个答案:

答案 0 :(得分:5)

假设dn都是int类型,并且外部循环实际上是迭代的。

案例1 - 如果d最初为零或为负,则for循环都不会迭代。因此,d永远不会改变,因此d < n无法停止生效。因此while循环将永远不会结束。

案例2 - 如果d为正,那么在while循环的第一次迭代中,第一个for循环会同时增加countd同时。 for条件将继续运行,直到d达到整数溢出并变为Integer.MIN_VALUE。然后退出for循环。但是,while循环的第二次迭代就像情况1一样 - 它不会结束。

答案 1 :(得分:0)

因为你在循环中改变了d ..因为d总是在增加你永远不会逃避循环

答案 2 :(得分:0)

虽然阻止但

没有问题
for (count = 0 ; count < d ; count++)
{
    d++;
}

这个for块很糟糕。如果d已经大于count,则它变为无限循环。比如d = 2,count = 0。第二个循环d=3count=1。第三个循环d=4count=2,它继续这样。