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的。任何解释都将受到高度赞赏,谢谢!
答案 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;