特殊的流程控制语句
分类
break
continue
return
label
break
2.1 含义:作用于循环,表示结束当前循环
2.2 做实验:while(true){ System.out.println("111"); System.out.println("222"); if(true){ System.out.printn("333"); } }
- 案例:循环录入麻生希同学5门课的成绩并计算平均分, 如果某分数录入为负,停止录入并提示
//解法一: import java.util.Scanner; public class Test6{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); double sum = 0; double avg = 0; for(int i = 1;i<=5;i++){ System.out.println("请输入第"+i+"门成绩"); double score = scan.nextDouble(); if(score<0){ System.out.println("分数为负,停止录入"); break; } sum+=score; } avg= sum/5; System.out.println("平均分为"+avg); } }//问题:输入负数时,结果会输出平均分
//解法二: import java.util.Scanner; public class Test6{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); double sum = 0; double avg = 0; int i = 1; for(;i<=5;i++){ System.out.println("请输入第"+i+"门成绩"); double score = scan.nextDouble(); if(score<0){ System.out.println("分数为负,停止录入"); break; } sum+=score; } if(i==6){ avg= sum/5; System.out.println("平均分为"+avg); } } }//问题:for结构不完整 ```
//解法三: import java.util.Scanner; public class Test6{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); double sum = 0; double avg = 0; boolean flag = true; for(int i = 1;i<=5;i++){ System.out.println("请输入第"+i+"门成绩"); double score = scan.nextDouble(); if(score<0){ flag = false; System.out.println("分数为负,停止录入"); break; } sum+=score; } if(flag){ avg= sum/5; System.out.println("平均分为"+avg); } } }//缺点:代码块功能未分开
//解法四: import java.util.Scanner; public class Test6{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); double sum = 0; double avg = 0; boolean flag = true; 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){ avg= sum/5; System.out.println("平均分为"+avg); }else{ System.out.println("分数为负,停止录入");} } }//最优
- continue
3.1 含义:作用于循环,表示跳过循环体剩余的部分,进入到下一次循环
3.2 做实验
while(true){ System.out.println("111"); System.out.println("222"); if(true){ continue; } System.out.prinln("333"); }
3.3 案例:
循环录入Java课5名学生的成绩,统计分数大于等于 80分的学生比例。
//解决方法一: import java.util.Scanner; public class Test9{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int count = 0;//记录大于等于80学生的个数 for(int i=1;i<=5;i++){ System.out.println("请输入第"+i+"名同学的分数:"); double score = scan.nextDouble(); if(score>=80){ count++; } } double proportion=count/5.0*100; System.out.println("统计分数大于等于80分的学生比例为"+proportion+"%"); } }
//解决方法二: import java.util.Scanner; public class Test9{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int count = 0;//记录成绩大于等于80学生的个数 for(int i =1;i<=5;i++){ System.out.println("请输入第"+i+"学生分数"); double score = scan.nextDouble(); if(score<80){ continue; } count++; } double proportion = count/5.0*100; System.out.println("统计分数大于等于80分的学生比例为"+proportion+"%"); } }
- return
4.1 含义:作用于方法里,表示结束当前方法
4.2 做实验public class Test10{ public static void main(String[] args){ System.out.println("111"); System.out.println("222"); if(true){ return; } System.out.println("333"); } }
- label
5.1 给循环取名字(做标记)public class Test11{ pubblic static void main(String[] args){ for(int i = 1;i<=5;i++){ //面试题:以下代码执行结果是什么? //答:循环5遍 https://www.baidu.com/ System.out.println("好好学习"); } } } /*结果是: 好好学习 好好学习 好好学习 好好学习 好好学习 ps://www.baidu.com/这段相当于注释,在jvm中不被识别, 而在JVM中相当于https:System.out.println("好好学习"); http:是label */
5.2 需求:嵌套for循环,外层循环5次,内层循环3次, 当外层循环到第2次,在内层循环中结束掉外层循环
public static void main(String[] args){ a:for(int i = 1;i<=5;i++){ for(int j = 1;j<=3;j++){ System.out.println(i + " -- " + j); if(i == 2){ break a;//跳出指定的外层循环 } } } } }