黑马程序员技术交流社区

标题: 关于continue、标签的一个问题 [打印本页]

作者: 马超happy519    时间: 2012-11-19 12:55
标题: 关于continue、标签的一个问题
本帖最后由 马超happy519 于 2012-11-20 11:10 编辑

程序如下:
public class J_Test
{
  public static void main(String[] args)
{
  int sum = 0;
  outer:
   for(int i = 1; i<10; i++)
   {
   inner:
    for(int j = 1; j < 3; j++)
    {
     sum += j;
     if (i + j>6)
     {
      continue inner;
     }
    }
   }
  System.out.println("sum = " + sum);
}
}
我认为当 i 等于5时,内循环会一直计算下去,但运行结果是sum = 27。想知道内循环如何结束,求解。
作者: 陶辰    时间: 2012-11-19 14:43
continue 用法和break一样。电脑直接把continue inner;看成continue;  而continue用法是 跳过你的if语句,重新开始for循环。
作者: 李计伟    时间: 2012-11-19 15:10
使用break 退出循环 可以使用break 语句直接强行退出循环,忽略循环体中任何其他语句和循环条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面语句重新开始。
而continue则停止执行当前的反复,然后退回循环起始和,开始新的反复。continue 用于跳过循环体中的一部分语句,也就是不执行这部分语句
return语句用来明确地从一个方法返回。也就是,return 语句使程序控制返回到调用它方法。因此,将它分类为跳转语句。
所以continue inner; 是跳出本次的inner循环并判断j 是否大于3 如果大于3就不走inner循环接着走外循环。


作者: 刘腾    时间: 2012-11-19 21:20
  1. class J_Test
  2. {

  3.      public static void main(String[] args)
  4.      {
  5.         int sum = 0;
  6.         outer:
  7.         for(int i = 1; i<2; i++)
  8.         {
  9.             inner:
  10.             for(int j = 1; j < 3; j++)
  11.             {
  12.                                 System.out.println("j="+j);
  13.                                 if (j==1)
  14.                                  {
  15.                                         continue inner;/*continue 结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。
  16.                                                                   这个例子中,尚未执行的部分语句是System.out.println("i="+i);
  17.                                               继续执行j++,而不是执行int j=1*/
  18.                                  }
  19.                                  System.out.println("i="+i);
  20.                     }
  21.             }

  22.      }
  23. }
复制代码
对照这个,你再分析你那个就明白了
作者: 马超happy519    时间: 2012-11-20 09:38
明白了,多谢各位{:soso_e100:}




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