2013-10-20 43 views
0

对于我的Java练习期中,我们需要编写一行代码的确切输出,在这种情况下,是for循环。下面的代码:需要关于这个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“将从5变为0,但我不知道”第一“如何重置为0.

我搜索了所有的答案,但找不到一个答案。任何关于如何工作的帮助都很好。谢谢!

+1

在eclipse中使用调试器。你会看到第一个变化的值如何变化 – gefei

+0

另外,请注意代码中的“first - '和”--first“。 –

+0

它不是'second'='5',它使'second'变为零 - 这是'int second = - first'。 –

回答

3

您将递减first两次:每次外循环迭代一次,并且每次内循环开始迭代一次。

因此在打印2 5后,它打到内部循环的末尾,并从外部循环中碰到first--。然后,当它再次返回到内部循环时,在打印其他任何内容之前它会打印int second = --first。因此,从2变为0.

就个人而言,我会尽量避免像int second = --first;这样的陈述 - 副作用通常会引起混淆。