A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘俊佳 中级黑马   /  2012-7-30 14:51  /  2107 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘俊佳 于 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--;
                }
        }

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

7 个回复

倒序浏览
本帖最后由 赵方明 于 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自减,使得每列打印的*个数依次减小

                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
//我的给你的解释如下
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--;
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
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:18 编辑



整个过程的执行顺序,图画的惨不忍睹,还有点失真,看不清楚的话希望见谅,

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
都给你画在图上了~~

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

122222222222.jpg
回复 使用道具 举报
陈红建 来自手机 中级黑马 2012-7-30 18:14:03
7#
我也是来看看!这个for的嵌套循环。
回复 使用道具 举报
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的值改的小一点,这样就能体现出来内循环的作用了

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马