2014-05-01 71 views
1

好我有以下的for循环:操作/计算

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

+0

_?'('% '是模数运算符) –

+5

可爱......笔记......永远! :D –

+0

@ZouZou,感觉自由,并检查我张贴的图片,因为它显示了我的计算方式,我知道我犯了一个错误,但我不知道我的计算出了什么问题。 – Acemi

回答

2

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

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

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

但是,对于第一迭代i将是2

initial value ; condition ; increment/decrements 

端每次迭代中第三块的将执行(increment/decrements)。因此,对于第一次迭代,我将是2

3-i%3 w将是3-(2%3) =>3 - 2 => 1。

对于下一个迭代我会i = i+2 => 2 + 2 => 4那么你的回答将“根据我的工作出来的第一个数字应为实际2” _`3-2%3 =是2

+0

是的谢谢你的建议,你在写,我有点误解了for循环如何实际计算。 – Acemi

3

根据我的工作出来的第一个数字应该是真正2.

检查你的计算:2 % 3(其余2除以3后)为2 3 - 21,所以输出是正确的。

请注意,操作不按照它们被写出的顺序执行:%具有比减法更高的优先级,因此它在减法之前执行。在这种情况下,这并不重要,但要牢记这一点很重要。