问答详情
源自:4-8 Java循环语句之 do...while

哪里有问题?

int i=1; int sum=0; do { if (i%2==0) { sum=i+sum; }else { i++; } }while(i<=50);         System.out.println(" 50以内的偶数之和为:" + sum );    哪里有问题?

提问者:_Lelouch_ 2018-03-18 11:03

个回答

  • qq_风中枫_0
    2018-03-18 20:01:16
    已采纳

    楼上正解,当i为偶数2时,只有sum会不断增加,而无法执行else中的i++操作,从而陷入死循环。

    解决办法:在sum = i + sum;语句下面同样加一句i++;

  • _Lelouch_
    2018-03-18 20:02:03

    不对是大括号  没有匹配

  • 不浪漫
    2018-03-18 16:00:52

    do 里面语句: i =1 执行了else i++ 此时i为2 ,符合了while的条件 ,继续执行do里面语句。 2 % 2 == 0 成立,执行sum=i + sum 即 sum = 2 + 0 ,sum = 2 ,i = 2;此时仍然符合while的条件。  那么接着执行 do里面语句,2 % 2 == 0成立, sum = 2 + 2  , sum = 4 , i = 2 ; 又符合while的条件,那么接着执行 do里面语句,2 % 2 == 0成立, sum = 4 +2 , sum= 6 , i = 2 ;又符合while的条件,那么接着执行 do里面语句.......你这是个死循环,看懂了么

  • _Lelouch_
    2018-03-18 11:18:37

    逻辑哪里错了?

  • _Lelouch_
    2018-03-18 11:04:08

     int i=1;
      int sum=0;
       do {
        if (i%2==0) {
         sum=i+sum;
        }else {
         i++;
        }
        
       }while(i<=50);
        
           
      System.out.println(" 50以内的偶数之和为:" + sum );