正确代码:
public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { if ( i%3 != 0) { sum += i; } } System.out.println(sum); }
问题1:
请问为什么 System.out.println(sum) 和 for循环并列放(在两个大括号下面)而不是像教程里面在 for 循环里面这样:
for (int i = 1; i <= 100; i++) { if ( i%3 != 0) { sum += i; } System.out.println(sum); }
问题2:
如果初始化和变量变化都可以是多个用逗号隔开就好,那么为什么如下代码输出有问题呢?
for (int sum = 0, i = 1; i <= 100 && i % 3 != 0; sum+=i, i++) { System.out.println(sum); }
问题1:如果你把System.out.println(sum);放在for循环里面,就相当于每次求完和都会输出结果,而和for循环一起并列,最后就只会输出最终的一个值。
问题2:你这样写最后只会输出0,1。原因:循环条件i<=100&&i%3!=0表示与关系,只有&&左右两边都为true时才为真。一开始
sum=0,i=1,满足循环条件,输出sum=0,然后执行sum+=i,i++;
sum=1,i=2,满足循环条件,输出sum=1,然后执行sum+=i,i++;
sum=3,i=3,这时不满足循环条件,因为3%3==0,所以右边为false,不满足循环条件,循环结束
这里不错
你里面的 System.out.println(sum); 会根据上面的条件,循环打印出多次结果,直至不满足条件为止,上面案例是输出一次结果