黑马程序员技术交流社区

标题: 关于for嵌套循环,,, [打印本页]

作者: 刘俊佳    时间: 2012-7-30 14:51
标题: 关于for嵌套循环,,,
本帖最后由 刘俊佳 于 2012-8-16 09:22 编辑

public class ForForDemo {
        public static void main(String[] args)
        {
                         int z=5;
               
                for(int x=0;x<5;x++)
                {
                        for(int y=0;y<z;y++)
                        {
                                System.out.print("*");
                                
                        }
                        System.out.println();
                        z--;
                }
        }

}
谁能帮我解释下上面的代码,视频上没听懂,最好说一下它的执行过程
作者: 赵方明    时间: 2012-7-30 14:55
本帖最后由 赵方明 于 2012-7-30 15:01 编辑

for嵌套,外圈负责行数,内圈控制列数。
public class ForForDemo {
        public static void main(String[] args)
        {
                         int z=5;
                /*
                外圈,定义一个int型变量x,初始化值为0,循环条件表达式用来x<5将行数限定在5
               */
               
                for(int x=0;x<5;x++)
                {
                        /*
                内圈,定义一个int型变量y,初始化值为0,循环条件表达式用来y<z,这个表达式将限制每行打印的*个数
               */
                        for(int y=0;y<z;y++)
                        {
                                System.out.print("*");//打印*号
                              
                        }
                        System.out.println();//每个内圈运行完之后,即每行打印完之后换行。
                        z--;//外圈没运行一次,z自减,使得每列打印的*个数依次减小

                }
        }

}
作者: 王峰    时间: 2012-7-30 15:08
//我的给你的解释如下
public class ForForDemo {
        public static void main(String[] args)
        {
                         int z=5;
                /*第一层for循环执行5次,先执行x=0;判断是否小于5,如果小于,
                执行{}里面的语句,语句执行完毕,x++执行一次,使x=1,然后再判断。。。直到x = 5*/
                for(int x=0;x<5;x++)
                {
                        //这里z开始z = 5,只是每执行一次,z自动以减1,第二次变为4,。。。如果y<z,就不执行
                        for(int y=0;y<z;y++)
                        {
                                System.out.print("*");
                                
                        }
                        System.out.println();
                        z--;
                }
        }

}
作者: 范泰洋    时间: 2012-7-30 15:32
public class ForForDemo {
        public static void main(String[] args)
        {
                int z=5;
                for(int x=0;x<5;x++)
                {
                        for(int y=0;y<z;y++)
                        {
                                System.out.print("*");
                                
                        }
                        System.out.println();
                        z--;
                }
        }

}
谁能帮我解释下上面的代码,视频上没听懂,最好说一下它的执行过程。

这个是大圈套小圈的思想。
(1)首先定义了成员变量int z = 5;
(2)然后先执行外循环{大圈}当x=0时,x<5满足条件,执行内循环{小圈}y = 0;y<z;然而这个是一个变量,不是具体的常量,所以

它会访问主函数方法内的局部变量z=5;这时,y<5;条件满足,执行内循环,注意,这里要y自增到不小于5的时候,才是条件不满足

,才算是执行完了内循环。
(3)执行完内循环后,不能马上去判断外循环的条件进行循环,因为,后面还有一个输出语句,必须先执行完输出语句的时候,再执

行z的自减。这时候z自减完后就不是5了,而是4了。
(4)按照以上的步骤如此循环,就可以了。

作者: 尤洋    时间: 2012-7-30 16:13
本帖最后由 尤洋 于 2012-7-30 16:18 编辑



整个过程的执行顺序,图画的惨不忍睹,还有点失真,看不清楚的话希望见谅,
作者: 黑马李文    时间: 2012-7-30 16:29
都给你画在图上了~~

122222222222.jpg (41.57 KB, 下载次数: 34)

122222222222.jpg

作者: 陈红建    时间: 2012-7-30 18:14
我也是来看看!这个for的嵌套循环。
作者: 马州州    时间: 2012-7-30 20:39
public class ForForDemo {
        public static void main(String[] args)
        {
                         int z=5;
               
                for(int x=0;x<5;x++)1.x=0,符合条件循环开始 6.执行x++,x=1,执行循环11.x++,x=2,执行循环15 x++,x=3 19x++,x=4 23.x++,x=5,不符合条件,循环结束

                {
                                for(int y=0;y<z;y++)2.y=0,符合条件,循环开始7.继续执行循环
                        {
                                System.out.print("*");3.因为z=5,所以循环执行五次,打印五个*8.因为z=4.所以打印四个*12.z=3,打印三个* 16 z=2,打印2个* 20 z=1 打印一个*

                                     }
                        System.out.println();4.换行9.换行13.换行 17.换行21.换行
                        z--;5.z--这时z=4,10.z--,z=3 14.z--,z=2 18.z--,z=1 22.z--,z=0
                }
        }
}
程序的执行步骤,在上面从红色标号1开始到23结束
其实这个程序也考察了for循环的执行步骤,楼主可以把z的值改的小一点,这样就能体现出来内循环的作用了






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2