int i=1; int sum=0; do { if (i%2==0) { sum=i+sum; }else { i++; } }while(i<=50); System.out.println(" 50以内的偶数之和为:" + sum ); 哪里有问题?
楼上正解,当i为偶数2时,只有sum会不断增加,而无法执行else中的i++操作,从而陷入死循环。
解决办法:在sum = i + sum;语句下面同样加一句i++;
不对是大括号 没有匹配
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里面语句.......你这是个死循环,看懂了么
逻辑哪里错了?
int i=1;
int sum=0;
do {
if (i%2==0) {
sum=i+sum;
}else {
i++;
}
}while(i<=50);
System.out.println(" 50以内的偶数之和为:" + sum );