for循环语句中的金字塔题

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:17:22
代码如下:
class forjina{
public static void main(String[] args){
int n=Integer.parseInt(args[0]);
for (int i=1; i<=n;i++){
for(int k=n;k>=i; k--){
System.out.print(" ");}
for (int j=1;j<=2*i-1;j++){
System.out.print("*");}
System.out.println();
}
}
}
显示效果如下:
D:\java\lesson>java forjina 5
*
***
*****
*******
*********
有个问题不明白:for (int j=1;j<=2*i-1;j++)语句中"j"其实就是"="2*i-1,可以显示出相应的"*"的个数,为什么要用"<=",还有j++是自加1,可是这个"*"符号是每次加2个,怎么理解?请哥哥们指教.

这个程序其实不难理解
i是行数的循环,j是显示*号的循环

你可以自己试着代入几个数,比如
当i=1的时候,j最大等于1,也就表示第一行输出一个*
当i=2的时候,j最大等于3,也就表示第一行输出三个*
第3行........5个*
...
...
...
可以推出,第N行,就要输出2*N-1个*
其中每次循环都是int j=1;j<=2*i-1;j++,说的就是输出*的个数,从第一个一直到第2*i-1个,执行完了以后然后跳出j的for循环,然后i++,再次进入到j的for循环.直至i<=N;for循环才结束.

我表达的不是很清楚.自己再领悟一下,同样的道理,还有比如如何输出

*
***
*****
*******
.....
***************
这样的图形,或者是倒三角的.
都得去推算他的规律.

你的问题,唉!

循环的条件是真时进入,如果你将j<=2*i-1;改为j=2*i-1时,请问第二次循环时,也就是当i等于2时,测试条件是真是假?这是一个条件句,不知道你怎么理解的?建议你看一个循环结构。
第二个问题,j是自加1,System.out.print("*");也是只打了一个,但当i=2时,for循环变成for(j=1;j<3;j++),你说他会打几个?i=3时呢?循环的嵌套而已,当然每次比原来多打了两个!但不是加两个,因为for本身再次循环时已经与上次无干了!

嵌套循环是内层退出时,再进行外层,内层循环还要再次循环的!至到外层循环结束!