栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[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<=5;i++){
    System.out.println("请输入第" + i + "名学生的成绩:");
    double score = scan.nextDouble();
    if(score >= 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的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号