• 5. 流程控制语句


    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。

    流程控制语句介绍

    通过一些语句,来控制程序【执行流程】

    3.1 流程控制语句分类(了解)

    顺序结构

    分支结构(if, switch)

    循环结构(for, while, do…while)

    3.2 顺序结构(了解)

    顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,

    从上到下,从左到右

    程序中大多数的代码都是这样执行的。流程图:

    3.3 分支结构之if语句

    3.3.1 if语句格式1(理解)

    格式:
    if (关系表达式) {
    语句体;
    }

    执行流程:

    ①首先计算关系表达式的值

    ②如果关系表达式的值为true就执行语句体

    ③如果关系表达式的值为false就不执行语句体

    ④继续执行后面的语句内容

    流程图:

    public class IfDemo {
    	public static void main(String[] args) {
    		System.out.println("开始");
            
    		// 如果年龄大于18岁, 就可以上网吧
    		int age = 17;
    		
    		if(age >= 18){
    			// int a = 10;
    			System.out.println("可以上网吧");
    		}
    			
    		System.out.println("结束");
    	}
    }
    

    if语句注意事项

    1.if语句所控制的语句体,如果是一条语句,大括号可以省略不写

      但是不建议

    2.if语句的小括号后面,没有分号

    3.3.2 if语句格式2(理解)

    格式:
    if (关系表达式) {
      语句体1;
    } else {
      语句体2;
    }

    执行流程:

    ①首先计算关系表达式的值

    ②如果关系表达式的值为true就执行语句体1

    ③如果关系表达式的值为false就执行语句体2

    ④继续执行后面的语句内容

     

     任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。

    public class Demo2If {
    	public static void main(String[] args) {
    		// 程序判断一个数, 是奇数还是偶数
    		int num = 9;
    		
    		if(num % 2 == 0){
    			System.out.println("偶数");
    		}else{
    			System.out.println("奇数");
    		}
    	}
    }
    

    3.3.3 if语句格式3(理解)

    格式:
    if (关系表达式1) {
      语句体1;
    } else if (关系表达式2) {
      语句体2;
    }

    else {
      语句体n+1;
    }

    执行流程:

    ①首先计算关系表达式1的值

    ②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

    ③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

    ④…

    ⑤如果没有任何关系表达式为true,就执行语句体n+1

     定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格,0~59请努力加油!

    public class Demo3If {
    	public static void main(String[] args){
    		int score = 65;
    		if(score >= 90 && score <= 100){
    			System.out.println("优秀");
    		}else if (score >= 80 && score <= 89){
    			System.out.println("良好");
    		}else if (score >= 70 && score <= 79){
    			System.out.println("中等");
    		}else if (score >= 60 && score <= 69){
    			System.out.println("及格");
    		}else if (score >= 0 && score <= 59){
    			System.out.println("请努力加油");
    		}else{
    			System.out.println("成绩有误!");
    		}
    	}
    }
    

    3.3.4 if语句格式3案例(应用)

    需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

    分析:

    ①小明的考试成绩未知,可以使用键盘录入的方式获取值,判断学生录入成绩是否在合法的范围内

    ②由于奖励种类较多,属于多种判断,采用if...else...if格式实现

    ③为每种判断设置对应的条件

    ④为每种判断设置对应的奖励

    import java.util.Scanner;
    
    public class Test {
    	/*
    		需求:键盘录入学生考试成绩, 根据成绩程序给出不同的奖励。
    		
    			95~100分 : 自行车一辆
    			90~94分  : 游乐场一次
    			80~89分	 : 变形金刚一个
    			80分以下 : 挨顿揍, 这座城市又多了一个伤心的人~
    
    		步骤:
    				1. 使用Scanner录入考试成绩
    				2. 判断成绩是否在合法范围内 0~100
    					非法的话, 给出错误提示
    				3. 在合法的语句块中判断成绩范围符合哪一个奖励
    					并给出对应的奖励.
    		
    	*/
    	public static void main(String[] args){
    		// 1. 使用Scanner录入考试成绩
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入您的成绩:");
    		int score = sc.nextInt();
    		// 2. 判断成绩是否在合法范围内 0~100
    		if(score >=0 && score <= 100){
    			// 合法成绩
    			// 3. 在合法的语句块中判断成绩范围符合哪一个奖励
    			if(score >= 95 && score <= 100){
    				System.out.println("自行车一辆");
    			}else if(score >= 90 && score <= 94){
    				System.out.println("游乐场一次");
    			}else if(score >= 80 && score <= 89){
    				System.out.println("变形金刚一个");
    			}else {
    				System.out.println("挨顿揍, 这座城市又多了一个伤心的人~");
    			}
    		}else{
    			// 非法的话, 给出错误提示
    			System.out.println("您的成绩输入有误!");
    		}
    	}
    }
    

    1. switch语句

    格式

    switch (表达式) {
    	case 1:
    		语句体1;
    		break;
    	case 2:
    		语句体2;
    		break;
    	...
    	default:
    		语句体n+1;
    		break;
    }

    格式说明:

    表达式:(将要匹配的值)取值为byte,short,int ,char,JDK5以后可以是枚举,JDK7以后可以是String。

    case:后面跟的是要和表达式进行比较的值(匹配的值)。

    break:表示中断,结束的意思,用来结束switch语句。

    default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句中的else相似。

    执行流程:

    • 首先计算出表达式的值

    • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

    public class Demo1Switch {
    	/*
    		1. 首先计算表达式的值。
    		2. 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句
    			在执行的过程中,遇到break就会结束。
    		3. 如果所有的case后面的值和表达式的值都不匹配
    			就会执行default里面的语句体,然后程序结束掉。
    
    		需求: 根据week变量记录的数值, 程序输入对应的星期
    		例如: int week = 1;		星期一
    	*/
    	public static void main(String[] args){
    		int week = 100;
    		
    		switch(week){
    			case 1 :
    				System.out.println("星期一");
    				break;
    			case 2 :
    				System.out.println("星期二");
    				break;
    			case 3 :
    				System.out.println("星期三");
    				break;
    			case 4 :
    				System.out.println("星期四");
    				break;
    			case 5 :
    				System.out.println("星期五");
    				break;
    			case 6 :
    				System.out.println("星期六");
    				break;
    			case 7 :
    				System.out.println("星期日");
    				break;
    			default:
    				System.out.println("您的数据有误");
    				break;
    		}
    	}
    }
    //您的数据有误

    注意事项:

    1.case给出的值不允许重复

    2.case后面的值只能是常量,不能是变量

    1.2 switch案例-减肥计划

    • 需求:键盘录入星期数,显示今天的减肥活动

    周一:跑步  
    周二:游泳  
    周三:慢走  
    周四:动感单车
    周五:拳击  
    周六:爬山  
    周日:好好吃一顿
    import java.util.Scanner;
    
    public class TestSwitch {
    	/*
    		需求:键盘录入星期数,显示今天的减肥活动。
    	
    		周一:跑步  
    		周二:游泳  
    		周三:慢走  
    		周四:动感单车
    		周五:拳击  
    		周六:爬山  
    		周日:好好吃一顿 
    
    		分析:
    			1. 键盘录入星期数据,使用变量接收
    			2. 多情况判断,采用switch语句实现
    			3. 在不同的case中,输出对应的减肥计划
    	*/
    	public static void main(String[] args){
    		// 1. 键盘录入星期数据,使用变量接收
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入");
    		int week = sc.nextInt();
    		// 2. 多情况判断,采用switch语句实现
    		switch(week){
    			// 3. 在不同的case中,输出对应的减肥计划
    			case 1:
    				System.out.println("跑步");
    				break;
    			case 2:
    				System.out.println("游泳");
    				break;
    			case 3:
    				System.out.println("慢走");
    				break;
    			case 4:
    				System.out.println("动感单车");
    				break;
    			case 5:
    				System.out.println("拳击");
    				break;
    			case 6:
    				System.out.println("爬山");
    				break;
    			case 7:
    				System.out.println("好好吃一顿");
    				break;
    			default:
    				System.out.println("您的输入有误");
    				break;
    		}
    	}
    }
    

    1.3 switch语句case穿透

    • 概述 : 如果switch语句中,case省略了break语句, 就会开始case穿透

    • 需求 : 键盘录入星期数,输出工作日、休息日 (1-5)工作日,(6-7)休息日

     

    import java.util.Scanner;
    
    public class Demo2Switch {
    	/*
    		需求: 键盘录入星期数,输出工作日、休息日
    		(1-5)工作日,(6-7)休息日
    		case穿透是如何产生的?
    			如果switch语句中,case省略了break语句, 就会开始case穿透.		
    		现象:
    			当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行
    			直到看见break,或者将整体switch语句执行完毕,才会结束。
    	*/
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入星期数:");
    		int week = sc.nextInt();
    		
    		switch(week){
    			case 1:
    			case 2:
    			case 3:
    			case 4:
    			case 5:
    				System.out.println("工作日");
    				break;
    			case 6:
    			case 7:
    				System.out.println("休息日");
    				break;
    			default:
    				System.out.println("您的输入有误");
    				break;
    		}
    	}	
    }
    

    应用场景:当发现switch中,多个case给出的语句体出现了重复的,就可以考虑使用case穿透来优化代码  

     




      

     

     

      

     

  • 相关阅读:
    Oracle专家高级编程 第二章 服务器和文件
    Oracle专家高级编程 第一章
    Leetcode 4 寻找两个正序数组的中位数
    Leetcode 3 无重复字符的最长子串
    Leetcode 2 两数相加
    Leetcode 1 两数之和
    gitee开源许可证
    js新特性展开符的使用方式
    webpack高速配置
    JS中日期比较时斜杠与横杠的区别
  • 原文地址:https://www.cnblogs.com/faded8679/p/13843701.html
Copyright © 2020-2023  润新知