• 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穿透来优化代码  

     




      

     

     

      

     

  • 相关阅读:
    如何通过命令行窗口查看sqlite数据库文件
    eclipse自动补全的设置
    文本装饰
    注释和特殊符号
    文本装饰
    网页背景
    通过ArcGIS Server admin 查看和删除已注册的 Web Adaptor
    通过 ArcGIS Server Manager 查看已安装的 Web Adaptor
    通过 ArcGIS Server Manager 验证 DataStore
    Windows上安装ArcGIS Enterprise——以 Windows Server 2012 R2上安装 ArcGIS 10.8为例
  • 原文地址:https://www.cnblogs.com/faded8679/p/13843701.html
Copyright © 2020-2023  润新知