为什么在java中这是一个无限循环?

为什么在java中这是一个无限循环?,java,Java,除了+++-->

除了+++--><=之外,我不能使用任何其他数学符号,我很难弄清楚为什么这是一个无限循环

 while (d < n)
    {

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

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

while block但是没有问题

for (count = 0 ; count < d ; count++)
{
    d++;
}
for(count=0;count

块的
不正确。如果
d
已经大于
count
它将成为一个无限循环。假设d=2,计数=0。第二个循环
d=3
count=1
。第三个循环
d=4
count=2
,它是这样继续的。

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

情况1-如果
d
最初为零或负,则
for
循环都不会迭代。因此,
d
永远不会改变,因此
d
不能停止为真。因此,
while
循环将永远不会结束


情况2-如果
d
为正,则在
while
循环的第一次迭代中,对于
循环的第一次
同时增加
计数和
d
条件将继续运行,直到
d
实现整数溢出并成为
integer.MIN\u值。然后退出
循环的
。但是,
while
循环的第二次迭代与案例1类似-它不会结束。

在每次迭代中增加d并以相同的数量计数。所以计数永远不会小于d。
d
的数据类型是什么?如果
d
是整数类型,答案就不同于如果它是浮点类型。不,这只是故事的一半。如果
d
int
,它将很快溢出,当到达
Integer.MIN\u值时,内部循环将结束。问题是它将小于
n
,因此我们无法跳出外部循环。除非您得到整数溢出。然后它变得有趣了!是的,但如果你想解释的话,这是另一个又长又深的故事。嗯,是的,我已经解释过了。故事没那么长。你的答案不是真的-如果
d
int
long
,那么
for
循环不会永远持续下去。