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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雷 中级黑马   /  2012-9-25 23:45  /  2995 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.                       int i = 0, j = 5;
  2.                 tp: for (;;)
  3.                 {
  4.                         i++;
  5.                         for(;;)
  6.                         {
  7.                                 if(i > j--)
  8.                                         break tp;
  9.                         }
  10.                 }
  11.                 System.out.println("i = " + i + ", j = "+ j);
复制代码

评分

参与人数 1黑马币 +3 收起 理由
黑马杨晨 + 3

查看全部评分

6 个回复

倒序浏览
这题咋做啊{:soso_e144:}
回复 使用道具 举报
                      int i = 0, j = 5;
                tp: for (;;)  //这个for循环应该是表示条件一直成立
                {
                        i++;
                        for(;;)
                        {
                                if(i > j--)
                                        break tp;
                        }
                }
                System.out.println("i = " + i + ", j = "+ j);

但是运行的结果好像跟想像中的不一样 求解
回复 使用道具 举报
首先外层循环是一个死循环,进入循环之后执行i++,i=1,再进入第二层循环,第二层循环也是死循环,进入之后会当i=1,j=0时,满足if的条件,执行break tp即结束最外层循环,此时i=1,j=-1,最后的结果就是:i=1,j=-1
回复 使用道具 举报
楼上的正解,结果是:i=1,j=-1
回复 使用道具 举报
本帖最后由 宫明星 于 2012-9-26 03:22 编辑
  1. int i = 0, j = 5;
  2.   tp: for (;;)        //这个意思是循环始终是真,无限循环
  3. {
  4.         i++;
  5.   for(;;)        //同上
  6. {
  7. if(i > j--)
  8.   break tp;//如果条件满足,跳出循环,注意,是跳出tp循环
  9. }
  10. }
  11. System.out.println("i = " + i + ", j = "+ j);
复制代码
循环执行第一遍时候,i++,进入内循环,此时,i的值是1
然后判断i > j--j这时是5,不成立,然后执行j--,因为内循环始终成立,返回再判断i > j--。
反复循环判断,一直到j等于0的时候,i > j成立,跳出循环,此时判断完之后执行j--,j的值是-1
所以最后打印的值应该是 i=1,j=-1

需要注意的环节我用红字标出来了。

评分

参与人数 1技术分 +1 收起 理由
王海宇 + 1 赞一个!

查看全部评分

回复 使用道具 举报
王雷 中级黑马 2012-9-26 08:47:00
7#
问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马