zyf4005
zyf4005
2016-04-10 02:51
采纳率: 78.3%
浏览 1.3k
已采纳

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

// 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
    小灸舞 2016-04-10 03:01
    已采纳

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

    点赞 评论
  • u012094400
    愈来愈好 2016-04-10 02: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);
    }
    }

    点赞 评论
  • liyi_303
    liyi_303 2016-04-10 02:58

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

    点赞 评论
  • drowned_ants
    drowned_ants 2016-04-10 03:15

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

    点赞 评论

相关推荐