黑马程序员技术交流社区

标题: 这个程序是怎么运行的 [打印本页]

作者: 刘永贵    时间: 2014-3-16 17:01
标题: 这个程序是怎么运行的
public class MyClass{
    public static void main(String argv[]){
        int i;
        int j;
        outer: for (i = 1; i < 3; i++)
            inner: for(j = 1; j < 3; j++) {
                if (j == 2)
                continue outer;
                System.out.println
                  ("Value for i = " + i + " Value for j = " +j);
}
    }
}
这个程序是怎么运行的

作者: osully    时间: 2014-3-16 17:11
1 1
2 1

j=2的时候 就继续外循环  不打印

那个 inner:  outer: 用来标记 ,
可以用 break  和 continue 来跳转到这个标记
作者: optimisticpig    时间: 2014-3-16 17:15
开始时顺序执行,当内循环j=2时,if语句满足条件执行continue outer;语句,直接跳转到外循环outer:for (i = 1; i < 3; i++)(此时i自增一次,值为2);再次执行内循环,j=2时继续跳转到外循环,i再次自增,值为3,条件不满足程序结束
作者: 孟祥钰    时间: 2014-3-16 17:29
本帖最后由 孟祥钰 于 2014-3-16 17:48 编辑
  1. public class MyClass
  2. {
  3.     public static void main(String argv[])
  4.     {
  5.         int i;
  6.         int j;
  7.         outer: for (i = 1; i < 3; i++)
  8.             inner: for(j = 1; j < 3; j++)
  9.             {
  10.                 if (j == 2)
  11.                     continue outer;
  12.                 System.out.println("Value for i = " + i + " Value for j = " +j);
  13.             }
  14.     }
  15. }
复制代码

定义两个变量i和j
用标号outer,inner分别标了外循环和内循环
先进行outer:for外循环
i=1满足i<3
进入inner for内循环
j=1 满足j<3
输出Value for i = 1 Value for j = 1
然后先进行j++运算
再进入inner:for内循环
此时j的值是2
满足if语句中的j==2条件
执行continue outer;
结束inner:for内循环
跳转到outer:for外循环
进行i++运算
此时i的值变为2
仍满足i<3
进入inner:for内循环
j=1 满足j<3
输出Value for i = 2 Value for j = 1
然后先进行j++运算
再进入inner:for循环
此时j的值是2
满足if语句中的j==2条件
执行continue outer;
结束inner:for循环
跳转到outer:for循环
进行i++运算
此时i的值变为3
不满足x<3的条件
程序结束





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