Java中的操作/计算

时间:2014-05-01 17:51:49

标签: java operations

好的,我有以下循环:

  public static void main(String []args){
        for (int i=2; i<12 ; i=i+2)
        System.out.print(3-i%3);
        System.out.println();
     }

它正在打印出来:12312。为了理解它是如何计算数字的,我试图解决它并根据我的工作原理,第一个数字应该是2。

我很确定,我的想法是错的,因为BlueJ首先打印出1号。 但为什么1?有人可以解释一下吗?

我已经在一张纸上写了我如何理解/计算出来并计算出来的图片,这样你就可以看到我得到2号的工作,也许你可以指出我的错误。

enter image description here

2 个答案:

答案 0 :(得分:3)

  

根据我的工作原理,第一个数字应该是2。

检查您的计算:2 % 3(将2除以3后的余数)为2. 3 - 21,因此输出正确。

请注意,操作不按写入顺序执行:%的优先级高于减法,因此在减法之前执行。在这种情况下无关紧要,但要记住这一点很重要。

答案 1 :(得分:2)

根据你的笔记,我认为你误解了for循环的行为。

根据您的注释,您在第一次迭代中将i替换为4(2 + 2)。

 for (int i=2; i<12 ; i=i+2)

但是,对于第一次迭代,我将是2

initial value ; condition ; increment/decrements

每次迭代结束时,第三个块将执行(increment/decrements)。因此,对于第一次迭代,我将是2

3-i%3 w将是3-(2%3) =&gt; 3 - 2 =&gt; 1。

对于下一次迭代,我将是i = i+2 => 2 + 2 => 4,那么你的回答将是2