> 文档中心 > [JavaSE] 特殊的流程控制语句【break】【continue】【return】【lable】—Day10

[JavaSE] 特殊的流程控制语句【break】【continue】【return】【lable】—Day10

目录

1.break

​2.continue

3.return

4.lable

总结:


1.break

作用:作用在循环中,表示跳出整个循环语句
例子:          

  while(true){        System.out.println("111");        System.out.println("222");        if(true){             break;        }        System.out.println("333");        System.out.println("444");   }

运行结果:

案例:循环录入小邓同学5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示

Scanner scan = new Scanner(System.in);           double sum = 0;                       boolean flag = true;//true-正常录入 false-非正常录入   for(int i = 1;i<=5;i++){        System.out.println("请输入第" + i + "门成绩:");        double score = scan.nextDouble();        if(score < 0){//分数录入为负          flag = false;          break;         }          sum += score;     }                       if(flag){      double avg = sum/5;      System.out.println("平均分为:" + avg);      }else{       System.out.println("分数录入为负,停止录入");    }                    

运行结果:


2.continue

作用:作用在循环中,表示跳过剩余循环体
举例:                  

  while(true){      System.out.println("111");      System.out.println("222");      if(true){           continue;       }      System.out.println("333");      System.out.println("444");   }

运行结果:


                        
案例:循环录入Java课5名学生的成绩,统计分数大于等于80分的学生比例。
解决方案一:                

  Scanner scan = new Scanner(System.in);          int num = 0;//记录分数大于等于80分的学生人数  for(int i = 1;i= 80){       num++;     }  }  System.out.println("大于等于80分学生的比例为:" + (num/5.0*100) + "%");

解决方案二:
                  

  Scanner scan = new Scanner(System.in);          int num = 0;//记录分数大于等于80分的学生人数  for(int i = 1;i<=5;i++){       System.out.println("请输入第" + i + "名学生的成绩:");       double score = scan.nextDouble();       if(score < 80){           continue;        }           num++;   }  System.out.println("大于等于80分学生的比例为:" + (num/5.0*100) + "%");

         
3.return

作用:单独编写,表示结束当前方法               

 System.out.println("111"); System.out.println("222"); if(true){    return;  } System.out.println("333"); System.out.println("444");

4.lable

 Java中,一般通过break和continue只能影响一层循环,而通过声明Label配合continue Label以及break Label可以影响到多层循环          
例1:嵌套for循环,外层循环5次,内层循环3次,当外层循环到第3次时,在内层循环中结束掉外层循环     

a:for(int i = 1;i<=5;i++){      for(int j = 1;j<=3;j++){       System.out.println(i + " -- " + j);       if(i == 3){              break a;        }       }}

运行结果:

例2:

for(int i= 0; i < 3; i++){     System.out.println("outer print: index  ["+ i+"]");     for (int j = 0; j<3; j++){  if (j == 1) {      continue;  }  System.out.println("inner print:  (" + j+")" );     } } System.out.println("========================"); outer: for (int i = 0 ; i<3 ; i++){     System.out.println("outer print: index  ["+i+"]");     for (int j = 0 ; j<3; j++){if (i == 2){      break outer;  }  if (j == 1) {      continue outer;  }  System.out.println("inner print:  ("+j+")");     } }

运行结果:

不难看出,continue Labe和break Label直接影响到了外层循环。

总结:

  1. 使用标签的唯一理由是:跳出嵌套循环。
  2. 标签定义在任何语句前基本上都是合法的,但只有定义在循环语句前才可能是可用的。
  3. 标签名不必是唯一的,只要不在嵌套循环的内外层上定义相同标签即可。
  4. break只能用于switch语句和循环语句中,continue 只能用于循环语句中。二者功能类似,但continue是终止本次循环,break是终止本层循环
  5. break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。

  6. 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。

  7. 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的。