for (int i = number ; i >= 1; i--){for (int j = 1; j <= i ; j++) {System.out.print(i);}System.out.println();}

这段代码执行结果为

55555

4444

333

22

1

===========================================

我们先来看外面的

for (int i = number ; i >= 1; i--)

i=mumber

number是通过用户输入的

赋给i

假设用户输入 5 则number为5

把 5赋给i

为什么要赋值i为5 因为要打印5次

55555

4444

333

22

1

根据这个结果来看  有5行

第一行是5个5 第二行是4个行

所以i要赋的值跟多少行有关系 当i>= 1的时候 i--

第一次i是5 第二次i--之后变成4

这个i变少是为了控制里面的for的执行次数

所以第一次是一行有5个数  第二次输出第二行有4个数

===========================================

我们再来看里面的

for (int j = 1; j <= i ; j++)
{
System.out.print(i);
}

int j = 1为什么j要等于1?

我们先假设 j=0

如果j等于0 那么j<=i 要j++几次后才能等于i? i这时候是5

当j=0时 执行一次 System.out.print(i);

也就是 输出了1个5 因为i我们通过用户输入了5

j=1时再执行一次  System.out.print(i);

现在是2个5

=2时再执行一次System.out.print(i);

现在是2个5

也就是 j如果一开始赋值为0的时候 那么 输出的次数将会多一次

所以j如果等于0 当最后 一次j去判断是不是<=i的时候循环了6次

System.out.print(i);

而这题是要求是打印出5个5

所以要从1开始

经过上面的分析 j <= i 为什么j要小于等于i 已经很清楚了

for语句的执行过程是 当满足这个条件就一直执行for内的代码 直到不满足条件

所以 当j<=i的时候 j就会一直自加 直到满足这个条件为止

还有一点就是这个for是在外面的for里面的 所以每次当外面for的执行的时候 这个里面的for的j就会被重新赋值为 1 从1开始再和 外面for里面的i进行判断

外面的for的i不会被重新赋值 而且 外面的for 循环一次 i就自减一次

所以里面for的j每次和i判断 i的值都会从比上一次小1

也就是 里面的for每次的执行效果都会少一次

所以最后的结果就是 第一行5个数 第二个4个数

然后System.out.print(i); 再打印出来就行了

System.out.print(i);这段代码是在里面的for里面的 里面的for就是控制每行打音出多少个数

打印i 因为i每次都自减 所以结果就是

55555

4444

333

22

1

System.out.println();最后的这段代码

要说明的是println 后面有ln 上面的 System.out.print(i); 没有in

区别在于 带in表示打印一次换一行

不带则不换行

如果System.out.print(i)带in的话 那结果就是

5

5

5

5

5

4

4

4

4

这个样子

所以要写成System.out.print(i)

然后里面的for执行完了 再执行一下换行操作 写在外面for的里面

不安就是555554444333221这样子