public class HelloWorld {
public static void main(String[] args) {
int sum = 0; // 保存 1-50 之间偶数的和
int num = 2; // 代表 1-50 之间的偶数
do {
//实现累加求和
num = num + 2;
sum = sum + num; // 每执行一次将数值加2,以进行下次循环条件判断
} while ( num<=50 ); // 满足数值在 1-50 之间时重复执行循环
System.out.println(" 50以内的偶数之和为:" + sum );
}
}
sum = sum + num;//先求和 num = num + 2;//再自增 //这种情况下最后的表达式是: 2+4+6+...+50 ==650 num = num + 2;//先自增 sum = sum + num;//再求和 //这种情况下最后的表达式是: 0+4+6+...+50+52 ==700 看到区别了吧 第二种情况比第一种足足大了50
第一种情况:
sum=sum+num;
num = num + 2
这样是先加完和,再判断num是否小于等于50,例如当num=50时执行完循环体内的代码后num=50+2,条件不满足所以就跳出循环了
第二种情况:
num = num + 2
sum=sum+num;
首先这样会少一个初始值2,而且如果num=num+2的值刚好为50 后面的判断条件为true,他会再执行一次循环。sum=sum+num就变成了sum=648+52 ,然后在进行判断,结果为false才会跳出循环。所以值为700
先num=num +2这时候num先执行等于4,所以sum的初始值变成了4,之后就一直判断下去直到num大于
50,跳出循环,虽然这样子是没有语法错误,但是这样子会使得50之内的偶数sum之和加少了一个2,所以是错误的。
你可以自己笔算一下,先进行 num = num + 2会使得sum总和少加了一个初始num值(2)
应该是第一次num+sum为2+0 然后 每一次sum加上num之后 再加num+2
应该是第一次sum+num为2+0 然后 每一次sum加上num之后 再加num
正确代码循环得时候是不是 0+2 2+2 判断4不大于50 继续 循环 第二次 是不是就是 2+4 4+2 了
sum = sum + num;
num = num + 2; // 每执行一次将数值加2,以进行下次循环条件判断