黑马程序员技术交流社区

标题: for循环最后输出的是?求答案 [打印本页]

作者: zmttt    时间: 2015-12-5 22:14
标题: for循环最后输出的是?求答案
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
if (i == j) {
break;
}
System.out.println("i=" + i + ", j=" + j);
}
}


作者: zmttt    时间: 2015-12-5 22:20
求分析过程
作者: a54267490    时间: 2015-12-5 22:22
i=1 j=0
i=2 j=0
i=2 j=1
如果两个数相等,break就是跳出内循环
作者: a54267490    时间: 2015-12-5 22:36
zmttt 发表于 2015-12-5 22:20
求分析过程

首先 i=0  j=0时 i==j结果为true,执行break,直接跳出内循环,开始下一个外循环;
然后i=1  j=0时 i==j结果为false 执行打印语句i=1   j=0,内循环继续,i=1 j=1时,i==j结果为true,执行break跳出内循环,继续外循环;
最后i=2 j=0和i=2 j=1时,i==j结果都为false,都会执行打印语句,当i=2 j=2时,i==j结果为true,执行break;跳出循环
所以最后结果只有三个:
i=1     j=0
i=2     j=0
i=2     j=1
作者: yuanjun52306    时间: 2015-12-5 22:51
楼上正解,break是跳出循环(当前循环体),continue是到循环尾(当前循环体)
作者: 胖小子    时间: 2015-12-6 11:39
本帖最后由 胖小子 于 2015-12-6 11:46 编辑

for (int i=0; i<3; i++) {              //外层   有 3次循环
      for (int j=0; j<3; j++) {        //内循环3次              //也就是说 一共9次
            if (i == j) {                    //每次i j 进行判断
                break;
             }
           System.out.println("i=" + i + ", j=" + j);
    }
}第一次:   i==j  break;  不输出i = 0 ; j =0;
第二次:   i!= j       i = 1 ; j =0;输出 i = 1 ;j==0;
第三次:   i==j      i = 1 ;j==1; 不输出 i = 1;j==1;
第三次:   i !=j      i =2 ;j =0;  输出 i = 2 ; j = 0;
第四次:  i != j     i=2;j=1; 输出  i=2;j=1;
第五次 : i==j    i=2;j=2; 不输出 i =2;j=2;

作者: 胖小子    时间: 2015-12-6 11:47
其实 也就是i != j 的时候 就输出 ,等于的话 就break了 跳出内循环了
作者: 耿帅东    时间: 2015-12-6 12:40
从上往下一步步分析就好了
作者: Kalsifa    时间: 2015-12-6 20:24
i=1 j=0
i=2 j=0
i=2 j=1

敲了一遍,我也跟着学习了
作者: 龙sama    时间: 2015-12-6 20:39
break会直接跳出内循环,直接外循环下一个值
i=0 j=0直接跳出到i=1
i=1 j=0 输出
i=1 j=1直接跳出到i=2
i=2 j=0 和i=2 j=1 都输出
i=2 j=2跳出然后整个结束
作者: 嘿嘿嘿嘿嘿    时间: 2015-12-6 21:01
break是跳出内循环,懂这个就不难了,谢谢楼上各位,学习了!
作者: 费费    时间: 2015-12-6 21:13
break;continue;return
作者: 隔壁老猫    时间: 2015-12-6 21:36
耿帅东 发表于 2015-12-6 12:40
从上往下一步步分析就好了

你这不是扯呢,人家要分析过程
作者: 再续啸傲    时间: 2015-12-6 21:48
get and look look




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