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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 游兴钟 中级黑马   /  2012-4-12 14:40  /  1513 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo
{
        public static void main(String []args)
        {
                int i = 0, j = 5;
                tp: for (;;)
                {
                        i++;
                        for(;;)
                        {
                                if(i > j--)//这里的条件判断完为FALSE,怎么还会执行下面的break?
                                        break tp;
                        }
                }
                System.out.println("i = " + i + ", j = "+ j);
        }
}        

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
不是执行了下边的 break tp;
而是条件判断为false后,自动跳出循环。
回复 使用道具 举报
郑苑东 来自手机 中级黑马 2012-4-12 15:56:28
藤椅
。里层循环一直执行。j一直自减。。直到等于0时符合条件,退出整个循环。。。这时候,i=1......j=0.....
回复 使用道具 举报
public class Demo
{
        public static void main(String []args)
         {
                int i = 0, j = 5;
                tp: for (;;)
                 {
                        i++;                                              //执行第一次后i变成1
                        for(;;)                                           //然后到for() 循环里面去执行
                         {
                                 if(i > j--)//这里的条件判断完为FALSE,怎么还会执行下面的break?       判断条件i 这时是1,这时j是5,不符合条件,没有break,但是还在循环体里面继续执行for()循环,判断i是否大于J,这时是4,在循环。知道i>j 时 break,这时j=0,但是j 还得执行J--,所以最后输出结果是i = 1, j = -1
                                         break tp;
                        }
                 }
                System.out.println("i = " + i + ", j = "+ j);
         }
}        
注意--i 是先执行i=i-1,然后在进行操作,i-- 是先进行操作然后在执行i=i-1;

评分

参与人数 2技术分 +1 黑马币 +12 收起 理由
邱俊杰 + 12
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
嵌套循环。
两个无限死循环
外循环开始执行- i++  等于1
内循环开始执行 1>5--  为false 继续执行内循环。 1>4--也是false 在继续执行。执行到1>0--时。为ture .循环跳出
输出结果最后j=0-- =-1
回复 使用道具 举报
嗯  懂了 解说的很详细 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马