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这样子