解释这段代码

时间:2015-04-14 05:56:50

标签: java

public class testing
{
    public void show() {
        int num = 0;
        int n = 5;
        for (int i=1; i<n; i++) {
            for (int j=0; j<i; j++) {
                System.out.print(num++);
                System.out.print(" ");
            }
            System.out.println(" ");
        }
    }
}

这个问题出现在我们以前的一个考试中,我不明白。答案是

0  
1 2  
3 4 5  
6 7 8 9 

但我不知道他们是如何得到它的。我有点理解第2到第4行,但不知道第一行是如何得到0的。任何解释都将受到高度赞赏,谢谢!

2 个答案:

答案 0 :(得分:1)

  

但不知道他们在第一行是如何获得0的?

int num = 0; --> it is 0 initially

对于第一次迭代,您的内部循环仅执行1时间

for (int i=1; i<n; i++) {
   for (int j=0; j<i; j++) { ---> for(int j=0;j<1;j++) // for 1st time

这就是为什么以下行

System.out.print(num++); //printed 0

注意:有一个名为debugger的工具,使用它!!

答案 1 :(得分:0)

以下修改过的代码可能有助于理解

int num = 0;
int n = 5;
for (int i=1; i<n; i++) { // loop from 0 to 4
    System.out.printf("num=%d  i=%d  :  ", num, i);
    for (int j=0; j<i; j++) { // loop from 0 to i
        System.out.print(num++); // print num then increment num
        System.out.print(" ");
    }
    System.out.println(" ");
}

输出

num=0  i=1  :  0  
num=1  i=2  :  1 2  
num=3  i=3  :  3 4 5  
num=6  i=4  :  6 7 8 9  

我相信你的问题在于这一行

System.out.print(num++);

以更详细的方式执行以下操作

System.out.print(num);
num = num + 1;