好的,我有以下循环:
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号的工作,也许你可以指出我的错误。
答案 0 :(得分:3)
根据我的工作原理,第一个数字应该是2。
检查您的计算:2 % 3
(将2除以3后的余数)为2. 3 - 2
为1
,因此输出正确。
请注意,操作不按写入顺序执行:%
的优先级高于减法,因此在减法之前执行。在这种情况下无关紧要,但要记住这一点很重要。
答案 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