2 zyf4005 zyf4005 于 2016.04.10 10:51 提问

为啥会死循环?求大神解答

// 1到100之间7的倍数的个数,并打印。

class dayin2
{
public static void main(String []args)
{
int sum=0;
for (int i=1; i<101 ;i++ )
{
for (;i%7==0 ; )
{
sum++;
}

   }
   System.out.println("1到100之间7的倍数的个数为"+sum);

}

}

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.10 11:01
已采纳

如果是for (;i%7==0 ; )那么当i循环到7的时候那么此时i%7等于0了,然后会进入循环执行sum++
由于此时for的第三个语句是空,那么又会判断i%7==0,此时又符合,又进入了for循环,sum++,就陷入死循环了
所以要改为if(i%7==0){sum++;}

zyf4005
zyf4005 亲,谢谢了
一年多之前 回复
u012094400
u012094400   2016.04.10 10:55

class dayin2
{
public static void main(String []args)
{
int sum=0;
for (int i=1; i<101 ;i++ )
{
if(i%7==0)
{
sum++;
}
}
System.out.println("1到100之间7的倍数的个数为"+sum);
}
}

u012094400
u012094400 回复zyf4005: 那样写都没有跳出循环的条件啊
一年多之前 回复
drowned_ants
drowned_ants 回复zyf4005: 可以的,但是满足条件为真实现sum自加后要跳出循环才可以,解决方案参考我下面的回答
一年多之前 回复
zyf4005
zyf4005 亲,for (;i%7==0 ; )为啥就不行了呢?
一年多之前 回复
liyi_303
liyi_303   2016.04.10 10:58

for (;i%7==0 ; )
{
sum++;
}
改为:
if(i%7==0)
{
sum++;
}

drowned_ants
drowned_ants   2016.04.10 11:15

for(;i%7==0;)
{
sum++;
}
可以拆解等价如下:
while(i%7==0){
sum++;
}
当i=7,上式为真,sum自加,陷入死循环,解决此问题一种方案可以如楼上所述,也可以直接在sum++后加个break跳出循环

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!