对于我的Java实践中期,我们需要编写一行代码的确切输出,在本例中是for循环。这是代码:
for(int first = 3; first > 0; first--)
for(int second = --first; second <= 5; second++)
System.out.println(first + " " + second);
所以我认为输出是:
2 2
2 3
2 4
2 5
但是当我在Ecplipse中运行时,它出现了:
2 2
2 3
2 4
2 5
0 0
0 1
0 2
0 3
0 4
0 5
我理解“秒”将从5变为0,因为“第二个&lt; = 5”但我不知道“first”如何也重置为0.
我搜遍了所有的答案,但找不到答案。任何有关如何工作的帮助都会很棒。谢谢!
答案 0 :(得分:3)
你递减first
两次:每次外循环迭代一次,每次内循环开始迭代。
因此,在打印2 5
之后,它会触及内循环的末尾,并从外循环中击中first--
。然后当它再次回到内部循环时,它会在打印任何其他内容之前点击int second = --first
。因此从2到0。
就个人而言,我会尽量避免像int second = --first;
这样的陈述 - 副作用经常引起混淆。