1 class Problem37
  2 {
  3         public static void main(String []args)
  4         {
  5                 one:
  6                    for(int i = 0; i < 4; i++)
  7                         {
  8                         two:
  9                            for(int j = 10; j < 30; j+=10)
 10                            {
 11                                 System.out.println(i+j);
 12                                 if(i > 2)
 13                                         continue one;
 14                            }
 15                         }
 16 
 17         }
 18 }
我的分析是当变量i为3时,由于continue语句,它要跑到“one”处,继续执行循环语句,所以我的分析是出现了死循环,可是运行的时候没有出现死循环。请解释一下为什么阿?

解决方案 »

  1.   

    第一次当执行continue语句到达标签one时i=3,i<4语句成立,再次执行for语句;
    第二次执行continue语句到达标签one 时i=4,i<4不成立,for语句到此退出,这时整个程序也退出. 
      

  2.   

    因为不管怎么样  i只要等于4的话  one的for循环就不会在继续下去的啊...
      

  3.   

    当跳转到one时,i的值并没有被初始化为零,因此这段代码不会造成死循环
      

  4.   

    当i = 3;时  进入  for(int i = 0; i < 4; i++)  然后 i 不就 = 4 了嘛
     
      

  5.   

    1 class Problem37 
      2 { 
      3    public static void main(String []args) 
      4        { 
      5            one: 
      6               for(int i = 0; i < 4; i++) 
      7                   { 
      8                       two: 
      9                            for(int j = 10; j < 30; j+=10) 
    10                            { 
    11                                System.out.println(i+j); //正常输出
    12                                if(i > 2) 
    13                                      continue one; //返回到one,知道i>=4时推出循环,不会有死循环.continue语句在System.out后面
                      }    
      

  6.   

    当执行if语句返回one,i并没有被赋值为零,而是继续进行i<4的判断。当i=4时for循环结束。
    if(i>2){
    i=0;
    continue one;
    }
    //系统崩溃;
      

  7.   

    我是这样理解的,
    continue是结束当次循环的,默认的是对最近的那个for起作用你加的one: 和two:是标识continue对那个for起作用所以它只是跳到for而不是重新执行for和单重循环里用continue一样性质
      

  8.   

    这是课本上的习题,原文的i是3,那样的话很容易分析出来,所以我把它修改为4,原以为会出现死循环,结果运行
    了没有出现死循环。这些小问题不注意点就不会发现,楼上对这个问题解释很好了。我自己也理解了,continue
    就是跳出了本次循环,但不会对循环的状态有所影响,也就是i根本就不会在从新赋值。
      

  9.   

    continue 只是结束本次循环,并不是结束整个循环,所以当i=3时,继续循环,i的值并不是0.
    当然,如果你在one语句后面加上一句: i = 0 应该就会出现死循环了吧
      

  10.   

    java中编写一个死循环听难的
      

  11.   

    当i的值到达3时,i>2成立,跳出内层for循环跳至one处,但是在这个过程中i=3依然保留下来,当i++后,外层for中的测试语句i<4为假,不再进入外层循环体,就不会再有机会执行if(i>2)这句,而是结束,所以没出现死循环.