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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋启龙 中级黑马   /  2012-9-4 08:16  /  1889 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋启龙 于 2012-9-4 08:31 编辑

class  Sss
{
        public static void main(String[] args)
        {
                   for (int i=0;i<3;i++ )
         {
            int y=0;
                         for ( System.out.println((y<i));y<i ;y++ )
                         {
                                 System.out.print("[ok],");
                         }
                         System.out.print(i);
}


        }
}
结果是怎么推理出来的?

评分

参与人数 1黑马币 +30 收起 理由
王德升 + 30 去看下老毕的day03的视频里面很清楚,希望.

查看全部评分

7 个回复

倒序浏览
希望你去看下不懂再回来问,继续努力!
回复 使用道具 举报
王德升 发表于 2012-9-4 08:26
希望你去看下不懂再回来问,继续努力!

看过忘了!不好意思
回复 使用道具 举报
宋启龙 发表于 2012-9-4 08:30
看过忘了!不好意思

:L:L:L:L,
回复 使用道具 举报
当i=0时,y=0,打印false不进入子循环,打印i为0
当i=1时,y=0,打印true,进入自循环,打印ok,退出子循环,打印i=1
当i=2时,y=0,打印true,打印ok,y++之后y=1,由于现在的y仍小于i,所以进行第二次循环,打印ok,退出自循环,打印i=2.
结束。
回复 使用道具 举报
本帖最后由 王德升 于 2012-9-4 08:47 编辑

class Test{ //Sss 希望楼主以后起个有意义的名字

        public static void main(String[] args){

                /*
                首先你要明白这个表达式。

                for(初始化表达式;循环条件表达式;循环后的操作表达式)
                {
                        执行语句;
                }


                */

                 for (int i=0;i<3;i++ ){//这个for是控制外循环的,也就是说外循环只执行3次,
                                        //当i=0时,i<3满足就进来了,然后当内循环体结束后,就会读到
                                        //循环后的表达式然后在读循环条件,以此类推。

                             int y=0;

                        for ( System.out.println((y<i));y<i ;y++ ){
                        //打印语句是看你设定的条件看执行不执行的,因为你在局部定义int y = 0,所以y就是0,
                                  System.out.print("[ok],");

                        }

                        System.out.print(i);

                        //结果你自己去推。
                }


        }
}
回复 使用道具 举报
我猜测楼主的问题可能在于没有真正明白for循环的执行过程
for(表达式1;表达式2;表达式3)
{

}
回复 使用道具 举报
     for (int i=0;i<3;i++ )
         {
                         int y=0;
                         for ( System.out.println((y<i));y<i ;y++ )
                         {
                                 System.out.print("[ok],");
                         }
                         System.out.print(i);
}



我猜测楼主的问题可能在于没有真正明白for循环的执行过程
for(表达式1;表达式2;表达式3)
{
     需要循环的内容
}
首先判断表达式1-----表达式2(必须是一个boolean值)成立的话-----需要循环的内容----表达式3------表达式2,成立的话----需要循环的内容----表达式3……依次类推
分析:
第一次循环
你的第一个循环 for (int i=0;i<3;i++ )当i=0时,i<3,然后进行看循环内容,y=0,然后进入循环  for ( System.out.println((y<i));y<i ;y++ ),其中它的表达式1是一个输出语句y<i的值,i=0,y=0,y<i不成立,所以输出false,然后判断表达式2,y<i,不成立退出循环,然后输出i即0,
进入 for (int i=0;i<3;i++ )循环,
第二次循环
执行i++操作,此时i=1,符合表达式2进入循环,此时y=0;然后进入for ( System.out.println((y<i));y<i ;y++ ),),其中它的表达式1是一个输出语句y<i的值,i=1,y=0,y<i成立,输出true;判断表达式2,y<i成立,进入循环  System.out.print("[ok],");打印ok,然后执行y++操作,得到y=1;判断for ( System.out.println((y<i));y<i ;y++ ),)中y<i操作,不成立,退出本次循环,然后输出i,
第三次循环
……
依次类推
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马