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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王桂丽 中级黑马   /  2012-7-22 18:43  /  2800 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王桂丽 于 2012-7-22 19:03 编辑

/*
需求:1、查看continue的特点:结束本次循环,继续下一次循环
   2、查看continue怎样执行
思路与步骤:1、通过两个for循环,当在内循环遇到continue后看是否会结束内循环,
      开始执行外循环
   2、在内循环continue之前打印y的值,为了区分,设为y1,查看在遇到continue
      之前,语句如何执行
   3、在内循环continue之后打印y的值,设为y2,查看当遇到continue后,语句如何执行
*/
class  Continue
{
public static void main(String[] args)
{
  for(int x=0;x<3;x++) //设置外层循环
System.out.println("x="+x);
  {
   
    for(int y=0;y<4;y++)//设置内层循环
   {
     System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
    continue;
   
      // System.out.println("y2="+y);//打印在遇到continue之后,y的值变化,并用y2接收
   
   }
  
  }
}
}
                                                                           一、暂不执行continue之后的值时的结果

file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/2531988876/QQ/WinTemp/RichOle/2QO7U{9GQ`Z$X]B_}9EYOHU.jpg




疑问:为什么遇到continue没有结束内循环,转而执行外循环?为什么不是以下结果?
x=0
y=0
x=1
y=0
x=2
y=0






class  Continue
{
public static void main(String[] args)
{
  for(int x=0;x<3;x++) //设置外层循环
  {
       System.out.println("x="+x);
    for(int y=0;y<4;y++)//设置内层循环
   {
     System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
    continue;
   
      System.out.println("y2="+y);//打印在遇到continue之后,y的值变化,并用y2接收
   
   }
  
  }
}
}


                                                  二、继续执行continue之下的语句编译时的结果




file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/2531988876/QQ/WinTemp/RichOle/V2{I~II(4(BNLV{(}1XFS%T.jpg


疑问:为什么无法访问continue之后的语句?如果continue之下的语句均无效,那也应该可以编译只是执行时执行不到该语句而无法输出啊。具体原因是什么?最后能解释一遍执行顺序,谢谢!





未命名2.jpg (9.25 KB, 下载次数: 49)

未命名2.jpg

未命名1.jpg (20.5 KB, 下载次数: 63)

未命名1.jpg

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
  1. public static void main(String[] args) {
  2.                 for(int i=0;i<10;i++){
  3.                         if(i%2==0){
  4.                                 continue;
  5.                         }
  6.                         System.out.println(i);
  7.                 }
  8.                 System.out.println("OVER");
  9.         }
复制代码
看输出了什么。
  1. 1
  2. 3
  3. 5
  4. 7
  5. 9
  6. OVER
复制代码
continue是用于跳出本次循环,在for循环中,碰到continue关键字后,直接跳转到本次循环结束,也就是马上执行for循环括号内的条件变化语句,++或者--语句,然后判断条件语句,再决定循环与否。continue后直接写代码,是访问不到的,报错说检测到无法访问的代码,一般我是用条件语句来调用continue。

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 王红霞 于 2012-7-22 19:56 编辑

class  Continue
{
public static void main(String[] args)
{
  for(int x=0;x<3;x++) //设置外层循环

  {System.out.println("x="+x);//x=0时  y进行for循环,当y的for循环结束之后才能继续外层的for循环。你说的continue它是跳出本次循环即:在for(int y=0;y<4;y++) {
     System.out.println("y1="+y);中循环 不执行本层for语句代码块中continue以下的代码语句。    当y循环了4次以后 就对x进行继续循环。x=2时,会再次对y的for语句循环一次,会把y的所有值再全部输出一次,依此继续之后的代码,所以会出现你编码后的结果。
   

    for(int y=0;y<4;y++)//设置内层循环
   {
     System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
    continue;
   
      // System.out.println("y2="+y);//打印在遇到continue之后,y的值变化,并用y2接收
   
   }
}
}
}
===============================================
class  Continue
{
public static void main(String[] args)
{
  for(int x=0;x<3;x++) //设置外层循环
  {
       System.out.println("x="+x);
    for(int y=0;y<4;y++)//设置内层循环
   {
     System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
    continue;//continue就是跳出本次循环 ,本层FOR语句continue一下的代码都不会再执行了。

   
      System.out.println("y2="+y);//打印在遇到continue之后,y的值变化,并用y2接收
   
   }
  
  }
}
}  

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主的理解是以为continue语句执行后,本层for语句就不再执行了,即跳出的是本层for语句,而去执行外循环的下一次循环。而continue语句的作用是在当次内循环中停止执行内循环中continue语句之后的语句,而执行内循环的下一次循环。
回复 使用道具 举报
class  Continue
{
        public static void main(String[] args)
        {
         for(int x=0;x<3;x++) //设置外层循环
         {
             System.out.println("x="+x);
                 for(int y=0;y<4;y++)//设置内层循环,内循环次数4次。
                {
                        System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
                        continue;//跳过本次循环体尚未执行的语句,立即开始下一次循环。
   
                         System.out.println("y2="+y);//因为此条语句在内循 continue 之后,所以运行 continue 之后会跳过此语句直接执行内循环的y++语句。   
                }
  
         }
        }
}

首先要明确continue和break的用法: continue 不是跳出,而是跳过本次循环体尚未执行的语句,立即开始下一次循环
                                                          continue 是作用于其所在的那层循环,而不是分支语句
                                                                 
                                                          break 是单独语句,执行该语句,表示跳出该语句所在for循环体或switch语句体。
                                                          执行for语句体的break语句,中断本级for循环,执行更上一级循环的下一次循环。
                                                               
                                                                 
                                                         楼主你要区分 break 与 continue 的用法与区别那样就不会混乱了

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class  Continue
{
public static void main(String[] args)
{
  for(int x=0;x<3;x++) //设置外层循环
System.out.println("x="+x);
  {
   
    for(int y=0;y<4;y++)//设置内层循环
   {
     System.out.println("y1="+y);//打印y的值,为了与continue语句之后的y的值区分,用y1接收
    continue;
   
      // System.out.println("y2="+y);//打印在遇到continue之后,y的值变化,并用y2接收    你这句话写在continue语句后面,永远访问不到,所以报错是无法访问的语句
   
   }
  
  }
}
}
要弄清,continue是结束本次循环进入下一次循环。continue下面的语句执行不到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马