黑马程序员技术交流社区

标题: break和continue [打印本页]

作者: vipzh    时间: 2012-12-2 17:41
标题: break和continue
break和continue它们都可以用来跳出当前循环,它们有哪些区别?
作者: xjandrew    时间: 2012-12-2 18:13
continue终止当前循环,继续下一循环,还在当前循环中

break中断循环进行,并跳出该循环
作者: 何伟    时间: 2012-12-2 19:04
break是跳出循环语句,continue只是停止本次循环,循环语句还会继续执行
作者: 张其辉    时间: 2012-12-2 19:10
break终止当前循环语句的执行,还可以用来终止switch语句
      
continue结束所在循环的本次执行,只能用在循环语句中

例如:在for循环中使用了break,那么就跳出整个for循环。而使用了continue则是跳出本次循环,继续下次循环仍然在for循环中
作者: 马海保    时间: 2012-12-2 22:11
break和continue的使用
1、语句功能
    1> break强制退出循环(当前循环)
    2> continue提前结束本轮循环体的执行,跳到下一次循环
2、原理
      
       ↓←←←←←←←←←←←←←←
                                  ↑               
                               continue        
                                                
循环条件 true 循环体 →→→→→
                                 
       ↓←←  break  ←←←
      
   false
      
      

作者: 丁桂松    时间: 2012-12-2 23:17
补充一点.continue可以跳出本次循环的特征.可以配合标签.做到自由控制流程跳转的效果.
作者: 丁桂松    时间: 2012-12-2 23:17
补充一点.continue可以跳出本次循环的特征.可以配合标签.做到自由控制流程跳转的效果.
作者: 程宏志    时间: 2012-12-2 23:50
break:是表示结束当前的循环体。
continue:是表示结束满足本次条件的循环。当它后面使用标示时,表示的是结束符合条件的循环,然后在进入下一次的循环。
break是终止,而continue是跳出满足条件的本次循环。不要弄混淆了

示例:
   outer: for (int i = 1; i <4; i++)
       {
   inner: for (int j = 1; j < 4; j++)
          {
                if (j==2)
             {
                continue outer;
             }
         System.out.println(i+"  "+j);
   }
   continue后面不使用outer时,
结果是:
1  1
1  3
2  1
2  3
3  1
3  3
当后面使用outer时,结果为:
1  1
2  1
3  1
看下,好好体会下
作者: super_Xiong    时间: 2012-12-3 05:14
break 跳出循环,并终止循环.
continue 跳出当前循环,继续下次

作者: Rancho_Gump    时间: 2012-12-3 14:23
本帖最后由 张向辉 于 2012-12-3 14:28 编辑

continue 是跳出当前循环,并继续进行条件改变,判断再循环;
break 终止循环,跳出循环体。
class  continuebreak
{
        public static void main(String[] args)
        {
                for(int i=0;i<6;i++)
                {
                        if(i==2)//当判断为2时,此层循环结束,continue之后代码不再执行,然后执行i++,即进入循环体再判断
                                continue;
                        System.out.print(i);
                }
                System.out.println();
                for(int i=0;i<6;i++)
                {
                        if(i==2)//当判断为2时循环结束
                                break;
                        System.out.print(i);
                }
        }
}
打印结果是:
01345
01
                  


作者: 李伟斌    时间: 2012-12-3 19:59
break是结束循环
continue是结束本次循环,进入下一循环;
比如
for(i=1;i<=10;i++)
{
if(i=4)break/continue
}
如果是break那么当循环到i=4的时候,就不再循环了,跳出如果是continue那么当循环到i=4的时候,就不执行i=4的操作了,跳出本次循环,执行i=5
作者: 马纵驰    时间: 2012-12-4 13:24
break语句 (强行结束循环)
  break语句作用:1、可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。2、使流程跳出switch结构
注意:break语句不能用于循环语句和switch语句之外的任何其他语句中
continue语句作用:结束本次循环,即忽略循环体中continue语句下面尚未执行的语句,接着进行下一次是否执行循环的判定。
注意:continue语句不能用于循环语句之外的任何其他语句中
continue语句和break语句的区别:
   continue语句只结束本次循环,而不是终止整个循环的执行。
   break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。break语句可以用在循环语句和switch语句中。在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句。
注意:循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。
作者: 庄生晓梦    时间: 2012-12-4 14:26
break退出当前循环;
continue是退出本次循环,进入下一次循环。
作者: Kevin123    时间: 2012-12-4 15:47
continue:跳出本次循环,接着下一次条件判断,再循环;
break: 终止循环,跳出循环体。以后的循环将不再执行,这是两者的根本区别。
作者: 但汉涛    时间: 2012-12-6 00:03
这个可以重新看下毕老师基础教程第三天(10)的内容。
出现break,那么肯定会结束循环,跳出循环体。
continue结束本次循环,继续下次循环。

break和continue.png (71.56 KB, 下载次数: 58)

break和continue.png

作者: 丁桂松    时间: 2012-12-6 05:01
本帖最后由 丁桂松 于 2012-12-6 05:13 编辑

好吧.回答的少.不给分.给段代码.

  1. <P>public class Monkey {

  2.         /**
  3.          * 海滩上有一堆桃子.有五只猴子来分 第一只猴子发现了桃子,将桃子分成了五份.发现多了一个.吃了,拿走了一份
  4.          * 第二只猴子也来到了海滩发现了桃子,也是将桃子分成了五份,发现多了一个.吃了,又拿走了一分, 五只猴子都是这么做的,问海滩上最初有多少个桃子.
  5.          */
  6.         public static void main(String[] args) {
  7.                 Monkey.peach();
  8.         }

  9.         public static void peach() {// 5^5 -4;
  10.                 falg: for (int j = 0;; j++) {//用falg标记外层循环.
  11.                         int count = j; // 海滩上桃子的总数
  12.                         for (int i = 0; i < 5; i++) {// 定义循环, 循环5次, 测试count是否能够分5次
  13.                                 if ((count - 1) % 5 == 0) {// 判断是否能满足吃掉1个然后再分成5分
  14.                                         count = (count - 1) / 5 * 4;// 如果可以分, 那么就改变海滩上桃子的总数, 吃1个,
  15.                                         // 分成5份, 留下4份
  16.                                 } else {// 如果不能分成5份, 跳过本次循环, 继续判断下一个数字
  17.                                         continue falg;
  18.                                 }
  19.                         }
  20.                         System.out.println(j);// 如果循环结束了, 代表成功分了5次
  21.                         break;
  22.                 }
  23.         }
  24. }
  25. </P>
  26. <P>
  27. </P>
复制代码
上面的break是跳出所有的for循环.continue 可以指定跳转的标签位置.
流程控制也可以使用return下面附代码.以XML文件操作.根据指定的标签的属性.获得他的子标签文本信息为例


作者: 丁桂松    时间: 2012-12-6 05:15
  1. public class TestXML {
  2.         // 查找某一个节点: 查找id为007的所有信息
  3.         @SuppressWarnings("unchecked")
  4.         public static void main(String[] args) throws Exception {
  5.                 // List<Element> list =new SAXReader().read(new
  6.                 // File(PATH)).getRootElement().elements("user");
  7.                 String PATH = "G:/workspaces/day10/src/dojoo/XMLdemo/NewFile1.xml";
  8.                 String id = "007";
  9.                 Document document = new SAXReader().read(PATH);
  10.                 Element rootelement = document.getRootElement();
  11.                 List<Element> list = rootelement.elements("user");
  12.                 for (Element element : list) {
  13.                         String xmlID = element.attributeValue("id");
  14.                         if (id.equals(xmlID)) {
  15.                                 String name = element.elementText("name");
  16.                                 String password = element.elementText("password");
  17.                                 System.out.println(name + ":" + password);
  18.                                 return;
  19.                         }
  20.                         System.out.println("无法获取信息!");
  21.                 }
  22.         }
  23. }
复制代码
程控制也可以使用return下面附代码.以XML文件操作.根据指定的标签的属性.获得他的子标签文本信息为例
如果这里使用break跳转将导致因为顺序结构的关系.下面的System.out.println("无法获取信息!");也会执行.因此使用return
作者: 邢晏玮    时间: 2012-12-6 11:58
1、break 语句在循环(for、for in,……)和switch等具有迭代选择特征的语句中使用,而且是终止最近的封闭代码块(即多重循环时,它只终止自己所在的循环),整体代码接在break语句后继续执行(如果break语句不是最后一行代码的话)。

2、continue语句与break语句使用场合类似,continue语句是不可以在单独的switch语句中使用,但可以在一个循环内的switch语句中使用。含有continue的迭代语句(或者叫循环语句),在遇到continue语句后,代码先不按照常规的从上往下的代码执行顺序执行,而是马上回到循环入口转入下一次循环。

3、break和continue语句在循环内的switch语句中使用时,是有些区别的。break是跳出本switch,switch后面的代码继续执行,而continue是不执行switch后的代码,可以理解为跳出循环,接着进入下一次循环。分别测试下面代码使用break和continue两种情况的输出,如果使用continue,你会发现程序找到Microsoft后,document.write代码不执行了,输出结果就比使用break少了一行。

作者: 焦健    时间: 2012-12-6 20:16
break跳出循环,执行循环语句后面的内容,continue仅跳过本次循环,进入下一次循环
作者: 焦健    时间: 2012-12-6 21:51
break跳出循环,执行循环语句后面部分的代码,continue仅跳过本次循环,继续判断条件是否为真,为真时进入下一次循环。
作者: 胡高德    时间: 2012-12-6 22:00
break是中断当前正在进行的循环,并跳出循环;
continue 也是跳出当前循环,唯一与break不同的是,跳出当前条件不成立的循环,判断下一个条件是否为ture,为ture的话则循环继续执行。
作者: 杨从强    时间: 2012-12-6 23:40
他们在多层循环中就可以容易的看见其区别。
就举个双层的for循环例子吧。
如果内循环是continue的话就直接跳出内循环执行外循环的下一次循环,是break的话直接就跳出外循环结束了。
                                           不知道你懂了没有。





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