老师您好,为什么i=i+j在for循环括号里面和外面,输出的结果不一样?

老师您好,为什么i=i+j在for循环括号里面和外面,输出的结果不一样?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ForDemo {
 
    public static void main(String[] args) {
        System.out.println("i=i+j在for循环括号外面");
        for(int i=0,j=1;j<5;j+=3) {
            i=i+j;
            System.out.println("i="+i+",j="+j);
        }
        System.out.println("i=i+j在for循环括号里面");
        for(int i=0,j=1;j<5;j+=3,i=i+j) {
            System.out.println("i="+i+",j="+j);
        }      
    }
 
}

输出结果:

i=i+j在for循环括号外面

i=1,j=1

i=5,j=4

i=i+j在for循环括号里面

i=0,j=1

i=4,j=4

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 飞越罗格镇 2020-02-02 03:04:25

我懂了( ̄▽ ̄"),老师帮忙把问题关闭一下吧,不知道咋删除。

  • 好的同学,懂了就好,加油!祝学习愉快~
    2020-02-02 14:57:54
提问者 飞越罗格镇 2020-02-02 02:48:15

完善一下提问:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class ForDemo {
 
    public static void main(String[] args) {
        System.out.println("情况1:i=i+j在for循环括号外面,后显示输出");
        for(int i=0,j=1;j<5;j+=3) {
            i=i+j;
            System.out.println("i="+i+",j="+j);
        }
        System.out.println("情况2:i=i+j在for循环括号外面,先显示输出");       
        for(int i=0,j=1;j<5;j+=3) {
            System.out.println("i="+i+",j="+j);
            i=i+j;
        }
        System.out.println("情况3:i=i+j在for循环括号里面,i=i+j在后");
        for(int i=0,j=1;j<5;j+=3,i=i+j) {
            System.out.println("i="+i+",j="+j);
        }      
        System.out.println("情况4:i=i+j在for循环括号里面,i=i+j在前");
        for(int i=0,j=1;j<5;i=i+j,j+=3) {
            System.out.println("i="+i+",j="+j);
        }          
    }
 
}

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
情况1:i=i+j在for循环括号外面,后显示输出
i=1,j=1
i=5,j=4
情况2:i=i+j在for循环括号外面,先显示输出
i=0,j=1
i=1,j=4
情况3:i=i+j在for循环括号里面,i=i+j在后
i=0,j=1
i=4,j=4
情况4:i=i+j在for循环括号里面,i=i+j在前
i=0,j=1
i=1,j=4

我可以理解不一样的原因是语句执行顺序,但是如果循环体内语句先执行的话,结果应该像“情况2”或“情况4”这样,“情况3”的结果是怎么计算出来的,还有“情况3”和“情况4”的结果为什么不一样,希望老师帮助解答一下,谢谢~

  • 情况三:第一次循环时,因为j+=3,i=i+j是在输出之后再加减,所以第一次输出为i=0,j=1,输出后此时j已经为4,i为4,执行第二次循环输出i=4,j=4,之后第三次循环j=7,i=11不满足小于5,所以跳出循环。 情况4一样:第一次输出为i=0,j=1,此时循环内i=1,j=4;执行第二次时输出i=1,j=4,此时循环内i=5,j=7,在执行第三次不满足i<5,跳出循环。
    2020-02-06 13:40:24
  • 就和2 4一样这种加法是先输出在加减的
    2020-02-06 13:44:20
  • 提问者 飞越罗格镇 回复 慕容7248226 #3
    谢谢您回答,写问题的时候没考虑括号内语句也要按顺序执行,后面想明白了
    2020-02-06 13:44:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码