求教本课里第一次执行的的“i%3”的结果为啥是“1”,i++不是在他前面吗?它当时不应该是2吗?

来源:4-9 Java循环语句之 for

400个二百五

2014-12-29 10:30

"自增1"的概念一直有点模糊,求各位大大给讲解下下图和代码快照的原理是一样的吗?我怎么弄不懂代码快照里的逻辑呢。

public class HelloWorld{
    public static void main(String[] args) {
           int i = 1;
          System.out.println(i);  //此时“i”为1
          i++;     //在此之后再出现的“i”是不是就应该是增1之后的结果“2”了?
          if (i%3!=0){             //此行的“i”是“2”,但是代码快照里的此处的“i”还是1,为什么呢?
      System.out.println(i);
              i=i+1;            //i=2+1=3
}
   
      System.out.println(i);

}

}

运行结果为:1    2     3   (按此结果来说,我的分析应该对啊?可是为什么在这课里就不一样了呢。

写回答 关注

4回答

  • 始作俑者Doo
    2014-12-30 10:54:49
    已采纳

    i++是在for后面的()而不是在{}里。

    400个二百...

    我懂了,原来是我循环的顺序搞差了……嘿嘿

    2014-12-30 11:54:03

    共 1 条回复 >

  • passionfoure
    2015-01-13 12:51:07

    针对快照:你首先得知道for的执行顺序

    for(表达式1;表达式2;表达式3)
    {  
               表达式4;
    }

    for执行的顺序应该是:


    第一次(N=1)初始化循
         首先执行表达式表达式1(一般为初始化语句);再执行表达式2(一般为条件判断语句),判断表达式1是否符合表达式2的条件;如果符合,则执行表达式4,否则,停止执行;最后执行表达式3。

    第N(N>=2)次循环
         首先执行表达式2,判断在表达式3上一次执行后的结果是否符合在表达式2要求;如果符合,则继续执行在表达式4,否则,停止执行。最后执行在表达式3。如此往复,直至表达式3不满足在表达式2条件是为止。


    针对上图:

    i++;     //在此之后再出现的“i”是不是就应该是增1之后的结果“2”了?

    此处相当于i=i+1,就是按照执行顺序就到这儿了


  • 始作俑者Doo
    2014-12-30 10:53:47

    这是for循环的一个规定。建议去百度搜for循环流程图,认真看看。

  • 始作俑者Doo
    2014-12-29 10:38:01

    第一次循环sum为1

    第二次循环sum为3


    400个二百...

    小弟就是不知道第一次循环为啥是1,主要是对“自增1”不是很理解,详细的问题请看我的代码图

    2014-12-29 10:42:24

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165523 学习 · 17586 问题

查看课程

相似问题