问答详情
源自:4-9 Java循环语句之 for

for 循环问题

正确代码:

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);
}


提问者:人称大帅逼 2018-09-13 11:57

个回答

  • qq_星空下_1
    2018-09-13 13:21:21
    已采纳

    问题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,不满足循环条件,循环结束

  • qq_Zhou周哥_dqrDJQ
    2018-10-05 16:27:19

    这里不错

  • 坚持律己
    2018-09-13 13:03:01

    你里面的 System.out.println(sum); 会根据上面的条件,循环打印出多次结果,直至不满足条件为止,上面案例是输出一次结果