精华内容
下载资源
问答
  • 使用 while、until、for、select ...在C语言、C++、C#、Python、Java 等大部分编程语言中,break continue 只能跳出当前层次的循环,内层循环中的 break continue 外层循环不起作用;但是 Shell 中的 break ...

    使用 while、until、for、select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字。

    在C语言、C++、C#、Python、Java 等大部分编程语言中,break 和 continue 只能跳出当前层次的循环,内层循环中的 break 和 continue 对外层循环不起作用;但是 Shell 中的 break 和 continue 却能够跳出多层循环,也就是说,内层循环中的 break 和 continue 能够跳出外层循环。

    在实际开发中,break 和 continue 一般只用来跳出当前层次的循环,很少有需要跳出多层循环的情况。

    break 关键字

    Shell break 关键字的用法为:

    break n

    n 表示跳出循环的层数,如果省略 n,则表示跳出当前的整个循环。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

    1-1Z320125915526.gif

    图1:Shell break关键字原理示意图

    【实例1】不断从终端读取用户输入的正数,求它们相加的和:

    #!/bin/bash

    sum=0

    while read n; do

    if((n>0)); then

    ((sum+=n))

    else

    break

    fi

    done

    echo "sum=$sum"

    运行结果:

    10↙

    20↙

    30↙

    0↙

    sum=60

    while 循环通过 read 命令的退出状态来判断循环条件是否成立,只有当按下 Ctrl+D 组合键(表示输入结束)时,read n才会判断失败,此时 while 循环终止。

    除了按下 Ctrl+D 组合键,你还可以输入一个小于等于零的整数,这样会执行 break 语句来终止循环(跳出循环)。

    【实例2】使用 break 跳出双层循环。

    如果 break 后面不跟数字的话,表示跳出当前循环,对于有两层嵌套的循环,就得使用两个 break 关键字。例如,输出一个 4*4 的矩阵:

    #!/bin/bash

    i=0

    while ((++i)); do #外层循环

    if((i>4)); then

    break #跳出外层循环

    fi

    j=0;

    while ((++j)); do #内层循环

    if((j>4)); then

    break #跳出内层循环

    fi

    printf "%-4d" $((i*j))

    done

    printf "\n"

    done

    运行结果:

    1 2 3 4

    2 4 6 8

    3 6 9 12

    4 8 12 16

    当 j>4 成立时,执行第二个 break,跳出内层循环;外层循环依然执行,直到 i>4 成立,跳出外层循环。内层循环共执行了 4 次,外层循环共执行了 1 次。

    我们也可以在 break 后面跟一个数字,让它一次性地跳出两层循环,请看下面的代码:

    #!/bin/bash

    i=0

    while ((++i)); do #外层循环

    j=0;

    while ((++j)); do #内层循环

    if((i>4)); then

    break 2 #跳出内外两层循环

    fi

    if((j>4)); then

    break #跳出内层循环

    fi

    printf "%-4d" $((i*j))

    done

    printf "\n"

    done

    修改后的代码将所有 break 都移到了内层循环里面。读者需要重点关注break 2这条语句,它使得程序可以一次性跳出两层循环,也就是先跳出内层循环,再跳出外层循环。

    continue 关键字

    Shell continue 关键字的用法为:

    continue n

    n 表示循环的层数:

    如果省略 n,则表示 continue 只对当前层次的循环语句有效,遇到 continue 会跳过本次循环,忽略本次循环的剩余代码,直接进入下一次循环。

    如果带上 n,比如 n 的值为 2,那么 continue 对内层和外层循环语句都有效,不但内层会跳过本次循环,外层也会跳过本次循环,其效果相当于内层循环和外层循环同时执行了不带 n 的 continue。这么说可能有点难以理解,稍后我们通过代码来演示。

    continue 关键字也通常和 if 语句一起使用,即满足条件时便跳出循环。

    1-1Z320145312215.gif

    图2:Shell continue关键字原理示意图

    【实例1】不断从终端读取用户输入的 100 以内的正数,求它们的和:

    #!/bin/bash

    sum=0

    while read n; do

    if((n<1 || n>100)); then

    continue

    fi

    ((sum+=n))

    done

    echo "sum=$sum"

    运行结果:

    10↙

    20↙

    -1000↙

    5↙

    9999↙

    25↙

    sum=60

    变量 sum 最终的值为 60,-1000 和 9999 并没有计算在内,这是因为 -1000 和 9999 不在 1~100 的范围内,if 判断条件成立,所以执行了 continue 语句,跳过了当次循环,也就是跳过了((sum+=n))这条语句。

    注意,只有按下 Ctrl+D 组合键输入才会结束,read n才会判断失败,while 循环才会终止。

    【实例2】使用 continue 跳出多层循环,请看下面的代码:

    #!/bin/bash

    for((i=1; i<=5; i++)); do

    for((j=1; j<=5; j++)); do

    if((i*j==12)); then

    continue 2

    fi

    printf "%d*%d=%-4d" $i $j $((i*j))

    done

    printf "\n"

    done

    运行结果:

    1*1=1 1*2=2 1*3=3 1*4=4 1*5=5

    2*1=2 2*2=4 2*3=6 2*4=8 2*5=10

    3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25

    从运行结果可以看出,遇到continue 2时,不但跳过了内层 for 循环,也跳过了外层 for 循环。

    break 和 continue 的区别

    break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

    展开全文
  • break和continue

    2021-04-08 19:56:03
    break和continue break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用) continue语句用在循环语句体中,用于终止某次循环...

    8 break和continue

    break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
    continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

    break语句详解

    大家还记得switch语句吗?

    switch穿透

    package study.scanner;
    
    import java.util.Scanner;
    
    public class switchDemo02 {
        public static void main(String[] args) {
            Scanner scanner =new Scanner(System.in);
            int x= scanner.nextInt();
            switch (x)
            {
                case 3:
                    System.out.println("满分");
    
                case 2:
                    System.out.println("冲刺");
    
                case 1:
                    System.out.println("努力");
    
                default:
                    System.out.println("干啥啥不行");
            }
    
        }
    }
    

    在没有使用break时,switch语句会在遇到合适的结果只会直接输出包含合适结果和在其之后的所有结果

    如上题在输入3之后就会出现以下情况:


    3
    满分
    冲刺
    努力
    干啥啥不行

    Process finished with exit code 0


    break结束穿透

    很明显,我们程序是绝对不能出现这种直接将所有可能全部甩出来的结果的,我们将这种现象称作switch的穿透现象所以我们应该使用break在遇到合适结果之后直接跳出该程序,即如下所示

    package study.scanner;
    
    import java.util.Scanner;
    
    public class switchDemo02 {
        public static void main(String[] args) {
            Scanner scanner =new Scanner(System.in);
            int x= scanner.nextInt();
            switch (x)
            {
                case 3:
                    System.out.println("满分");
                    break;
                case 2:
                    System.out.println("冲刺");
                    break;
                case 1:
                    System.out.println("努力");
                    break;
                default:
                    System.out.println("干啥啥不行");
            }
    
        }
    }
    

    再输入3之后:


    3
    满分

    Process finished with exit code 0


    我们会发现加入break语句之后,在遇到了合适的case选项之后,会直接终止程序的进一步穿透,仅仅只是显示了“3”之下的相关程序处理和输出之后就跳出了switch语句,这就是break的作用;

    循环中的break

    break在循环中也是相同的作用,它可以在符合某些循环条件之后直接跳出循环体,并直接结束循环进入下面的流程中,由于用法和switch语句基本相同,在此不一一赘述。

    只举一个例子说明一下

    package study.base;
    
    public class breakDemo01 {
        public static void main(String[] args) {
            int i=0;//初值赋值为0
            while (i<100){
                i++;//让i进行进入循环体的次数记录
                if (i==30)
                    break;//当i=30时直接终止执行,直接跳出循环
            }
            System.out.println(i);
        }
    }
    结果:
    30
    
    Process finished with exit code 0
    如果没有break,那么输出的数值应该是100,而加入了break之后会使其在第30次循环后直接结束,所以输出的是30
    
    

    continue语句详解

    continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

    但由于continue只是终止了当前循环而并不会直接跳出当前循环,所以其在结束了当前循环之后还会进入下一次循环

    程序详解(原始程序)

    如:

    package study.base;
    
    public class continueDemo01 {
        public static void main(String[] args) {
            int i=0;
            while (i<100){
                i++;
                if (i%10==0){
                    System.out.println( );
                    continue;
                }
                System.out.print(i+" ");
            }
        }
    }
    

    是否continue程序对比

    如果将那一段if语句直接注释掉,那么continue语句就不会发生作用,结果就会变成:

    package study.base;
    
    public class continueDemo01 {
        public static void main(String[] args) {
            int i=0;
            while (i<100){
                i++;
    //            if (i%10==0){
    //                System.out.println( );
    //                continue;
    //            }
                System.out.print(i+" ");
            }
        }
    }
    结果:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 
    Process finished with exit code 0
    
    

    如果加入了if语句之后就会启用continue语句,即:

    package study.base;
    
    public class continueDemo01 {
        public static void main(String[] args) {
            int i=0;
            while (i<100){
                i++;
                if (i%10==0){
                    System.out.println( );
                    continue;
                }
                System.out.print(i+" ");
            }
        }
    }
    结果:
    1 2 3 4 5 6 7 8 9 
    11 12 13 14 15 16 17 18 19 
    21 22 23 24 25 26 27 28 29 
    31 32 33 34 35 36 37 38 39 
    41 42 43 44 45 46 47 48 49 
    51 52 53 54 55 56 57 58 59 
    61 62 63 64 65 66 67 68 69 
    71 72 73 74 75 76 77 78 79 
    81 82 83 84 85 86 87 88 89 
    91 92 93 94 95 96 97 98 99 
    
    Process finished with exit code 0
    
    

    可以发现的是,当加入了continue语句之后,即使在触发continue语句的前提下,也没有直接结束相关的循环语句,但跳过了在循环体中位于if语句之下的输出i+空格语句,直接回到了最上面的判断条件中。

    最终对比:

    为了更加清晰地辨别break和continue的区别,我们再将同一段代码利用break和continue分别运行一遍:

    break:

    package study.base;
    
    public class continueDemo01 {
        public static void main(String[] args) {
            int i=0;
            while (i<100){
                i++;
                if (i%10==0){
                    System.out.println( );
                    break;
                }
                System.out.print(i+" ");
            }
        }
    }
    结果:
    1 2 3 4 5 6 7 8 9 
    
    Process finished with exit code 0
    
    

    continue:

    package study.base;
    
    public class continueDemo01 {
        public static void main(String[] args) {
            int i=0;
            while (i<100){
                i++;
                if (i%10==0){
                    System.out.println( );
                    continue;
                }
                System.out.print(i+" ");
            }
        }
    }
    结果:
    1 2 3 4 5 6 7 8 9 
    11 12 13 14 15 16 17 18 19 
    21 22 23 24 25 26 27 28 29 
    31 32 33 34 35 36 37 38 39 
    41 42 43 44 45 46 47 48 49 
    51 52 53 54 55 56 57 58 59 
    61 62 63 64 65 66 67 68 69 
    71 72 73 74 75 76 77 78 79 
    81 82 83 84 85 86 87 88 89 
    91 92 93 94 95 96 97 98 99 
    
    Process finished with exit code 0
    
    
    展开全文
  • break和continue都用在循环语句里,用来控制循环。break的使用结束整个循环。i 输出结果是:1 2 3 4 5 6continue的使用结束本次循环,开始下一轮循环。i = 1 while i <= 10: if i == 7: continue print(i) i +...

    c70b36b08848d29b82d621e57c486add.png

    break和continue都用在循环语句里,用来控制循环。

    break的使用

    结束整个循环。

    i 

    输出结果是:

    1
    2
    3
    4
    5
    6

    continue的使用

    结束本次循环,开始下一轮循环。

    i = 1
    while i <= 10:
        if i == 7:
            continue
        print(i)
        i += 1

    输出结果是:

    1
    2
    3
    4
    5
    6
    8
    9
    10

    练习

    1. 打印 1~100 内,不能被 7 整除的所有数字。
    2. 计算 1~100 内,所有不能被 7 整除的数字之和。
    3. 不断的询问用户,"我爱你,你爱我吗?",只有用户回答"爱"时,结束循环。

    注意点

    1. 在Python中,break和continue只能用于循环语句中。
    2. break和continue在嵌套循环中使用时,只对最内层循环有效。
    展开全文
  • Scala break和continue

    千次阅读 2016-10-28 17:04:51
    Scala没有提供break和continue,可以通过以下方式实现一个:import util.control.Breaks._ object BreakDemo { def main(args: Array[String]) { breakable { for (i ) { if (i == 2) break() els

    Scala没有提供break和continue,可以通过以下方式实现一个:

    import util.control.Breaks._
    
      object BreakDemo {
    
        def main(args: Array[String]) {
          breakable {
            for (i <- 1 to 10) {
              if (i == 2) break() else println(i)
            }
          }
        }
      }
    
      import util.control.Breaks._
    
      object ContinueDemo {
    
        def main(args: Array[String]) {
          for (i <- 1 to 10) {
            breakable {
              if (i == 2) break() else println(i)
            }
          }
        }
      }

    上面两个例子的区别:在循环内,就是continue,在循环外就是break。

    展开全文
  • break和continue语句

    2019-10-01 12:02:15
    几乎所有程序语言都有break和continue语句,可见它们的重要性,即使不重要相信也是够实用的吧。但是在真正的开发过程中,又有多少人会忽视它们的用法呢?相信初学者或者不关心程序优化的人应该其了解的比较肤浅。...
  • break continue的使用

    2021-03-06 23:03:22
    break continue使用简介break continuebreak(中断循环 跳出循环)continue(跳过一次循环 继续执行下一次循环) break continue break(中断循环 跳出循环) 语法: while(){ if(){ break;//跳出循环 } }...
  • 对break和continue 进行区分,了解其特性以及使用环境。 学习产出: 其中break和continue常用于 whitch() case: 语句中,但举例只为了解两个关键词的用法 //continue的用法介绍 ,实例使用 #include<...
  • C语言break和continue

    2016-10-20 18:47:00
    break和continue C语言中有有两种结束循环的关键字:break和continue #include <stdio.h> #include <stdlib.h> int main() { int i,f; f = 0; for(i = 1;i<=10;i++){ if(i == 6) .....
  • break和continue break和continue练习 break和continue break用在switch-case循环中,不能用于if-else语句中 break在循环中表示跳出当前循环(在内循环则跳出内循环) continue在循环中表示跳出当次循环  ...
  • java中break和continue的用法

    万次阅读 多人点赞 2019-04-11 16:44:46
    break和continue的用法 ** break的用法: 1.break用于switch语句中,终止switch语句 2.break用于循环时,跳出循环 3.break用于其他位置,毫无意义 1. break用于switch语句中,终止switch语句 int a=4; switch(a)...
  • break和continue关键字

    2021-09-19 11:22:12
    以下内容仅仅是个人的理解,如有错误,欢迎指正~~~~ ...以下是几个小案例帮助我们更好的理解continue: 执行结果: 执行结果: 2.break关键字:用于立即跳出整个循坏(循坏结束) 执行结果: ...
  • breakbreak可用于(提前)退出循环【例】输出指定范围的素数lower = int(input("输入区间最小值:"))upper = int(input("输入区间最大值:"))for num in range(lower,upper + 1): # 素数大于 1 if num > 1: for i in ...
  • break和continue break和continue是专门在循环中使用的关键字 break:某一条件满足时,退出循环,不再执行重复的代码 continue:某一条件满足时,不执行后续重复的代码 break continue 只针对 当前所在循环有效...
  • php的break和continue

    2018-01-18 15:20:15
    当满足某个条件时,进行特殊的处理,其中break和continue是经常使用的两个操作:一、基础使用1.continu 中止本次操作,但是下次操作不受影响:for($a = 0; $a ; $a++) { if ($a == 2) { continue;// 仅仅符合条件...
  • break 作用:用于终止当前循环 break 如果用于循环是用来终止循环,break只能终止距离它最近的循环 break如果用于switch,则是用于终止...continue也不能直接用于if中,除非if属于循环的一个句子,同break,此时它的
  • 编写一个脚本计算1-100中所有奇数的等于多少。#!/bin/bash#let SUM=0let i=0while [ $i -lt 100 ]; do let i++ if [ $[$i%2] -eq 0 ]; then continue fi let SUM+=$idoneecho $SUM当$i是偶数时候,continu...
  • java 的break和continue

    2019-11-13 15:23:47
    #使用break break用于完全结束一个循环,跳出循环体。...continue和break有些类似,区别是continue只能终止本次循环,接着开始下一次循环。以下是continue的用法: continue可以用在for循环,while循...
  • 循环分支及break和continue  switch,if…else…,for,while,break和continue,这些都是很常用的关键字,但是还是有很多细节之处需要注意。 1. switch (1) switch(X)其中X必须是整型数(包括枚举字符)。 (2)...
  • break和continue的区别

    2018-11-29 20:52:49
    break和continue的区别 break可用于跳出离他最近的循环语句。 continue可用于忽略本次循环中continue以下的执行语句,将执行继续回到循环处。 比如: public class BreakAndContinue { public static void main...
  • break continue 都是用来控制循环的语句。 break 用于完全结束一个循环,跳出循环体执行循环后面的语句。 continue 用于跳过本次循环,执行下次循环。 写一个没有这两个关键字的循环代码 再写一个有break的循环...
  • 循环体中使用break和continue语句,可以灵活实现循环的整体跳出单次跳出。 然而,有评论认为,break和continue语句是“非结构化”的,不值得提倡。 于是,Java how to program的作者给我们学生留了这道题:请用...
  • 对break continue 还是有点搞不清除,今天在看《Thinking in Java》,看到这个,学习了一下。  break的作用是跳出这个循环(如果这个break或者continue在循环中的if语句里面,不是跳出if语句,而是跳出循环...
  • break和continue语句的

    2018-11-07 13:45:31
    break和continue都是结束循环的语句,但两者有区别。break是结束整个循环,不管循环条件是否成立,都直接跳出循环,而continue只是结束本次循环,也就是说循环体内continue语句以下的语句不会被执行; 比如 输出不被...
  • 如何避免循环中丑陋的break和continue 这两天逛知乎,看到一篇帖子《为何部分程序员从不使用 breakcontinue 语句?》 目前工作七八年的经历来看,存在即合理,循环中绝对不使用break和continue是有点极端...
  • 文章目录前言二重循环中的break和continue用于控制本层循环 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,部分代码为亲自动手演示过的,方便复习用。此篇文章仅供学习参考。 提示:以下...
  • 一、continue的使用方法(结束当前的循序,进行下一个数的循环)# *****************************************************************************# This is a program to illustrate the useage of continue in ...
  • 【Java入门练习100例】08.素数——break和continue

    千次阅读 热门讨论 2021-10-10 18:14:38
    素数的定义 break和continue 开方运算

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,606
精华内容 49,442
关键字:

以下对break和continue