为了账号安全,请及时绑定邮箱和手机立即绑定

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

"自增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 回答

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

0 回复 有任何疑惑可以回复我~
#1

400个二百五 提问者

我懂了,原来是我循环的顺序搞差了……嘿嘿
2014-12-30 回复 有任何疑惑可以回复我~

针对快照:你首先得知道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,就是按照执行顺序就到这儿了


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

第一次循环sum为1

第二次循环sum为3


0 回复 有任何疑惑可以回复我~
#1

400个二百五 提问者

小弟就是不知道第一次循环为啥是1,主要是对“自增1”不是很理解,详细的问题请看我的代码图
2014-12-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信