Day04-1.分支结构

流程控制

  1. 概念:控制代码执行的顺序
  2. 分类:
    顺序结构:代码从上往下,从左往右依次执行(默认执行)
    分支结构:在代码的执行过程中,可能有不同的运行结果;根据条件的不同,选择执行其中一种结果。
    特点:代码写的多,程序运行的少
    循环结构:在程序中有某些代码需要反复执行,可以通过某种格式来完成代码的简化。
    特点:代码写的少,运行的次数多

分支结构

  1. 概念:在代码的执行过程中,可能有不同的运行结果;根据条件的不同,选择执行 其中一种结果。
    特点:代码写的多,程序运行的少
  2. 分类:
    if语句
    if
    if…else
    if …else if…else if…else
    switch语句

if语句的第一种格式

  1. 格式:
    if(条件表达式){
    语句体;
    }
  2. 说明:
    条件表达式:布尔表达式,运算的结果要么为真,要么为假
    语句体:可以是任意操作
  3. 执行流程:
    (1)先执行条件表达式,结果要么为真,要么为假
    (2)如果结果为真,执行语句体
    (3)如果结果为假,不执行语句体
  4. 注意事项:
    (1)语句体可以是任意操作,可以是多行代码
    (2)如果语句体只有一句,可以将大括号省略;如果语句体有多句,不能省略大括号
import java.util.Scanner;
class Demo01 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请录入您的年龄:");
		int age = sc.nextInt();

		//判断条件表达式
		if(age >= 18){
			//表达式为真,执行
			//为假,不执行
			System.out.println("你可以观看此影片!");
			System.out.println("你可以观看此影片!");
			System.out.println("你可以观看此影片!");
		}
		//if语句结束之后,正常执行
		System.out.println("欢迎您的下次观看!");
	}
}

if语句的第二种格式

  1. 格式:
    if(布尔表达式){
    语句体1;
    }else{
    语句体2;
    }
  2. 流程:
    (1)先执行布尔表达式
    (2)如果结果为真,执行语句体1,结束整个if语句
    (3)如果结果为假,执行语句体2,结束整个if语句
import java.util.Scanner;
class Demo02 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请录入您的年龄:");
		int age = sc.nextInt();

		//判断条件表达式
		if(age >= 18){
			//如果结果为真,执行
			System.out.println("您可以进入该场所!");
		}else{
			//如果结果为假,执行
			System.out.println("请有大人陪同!!!");
		}
		//if结束后,正常执行
		System.out.println("欢迎下次光临");
	}
}

if语句的第三种格式

  1. 格式:
    if(布尔表达式1){
    语句体1;
    }else if(布尔表达式2){
    语句体2;
    }else if(布尔表达式3){
    语句体3;
    }

    else{
    语句体n;
    }
  2. 执行流程:
    (1)布尔表达式1,结果为真或者为假
    (2)如果表达式1的结果为真,执行语句体1,结束整个if语句
    (3)如果表达式1的结果为假,不执行语句体1,执行布尔表达式2
    (4)表达式2结果为真,执行语句体2,结束整个if语句
    (5)表达式2结果为假,不执行语句体2,执行布尔表达式3
    (6)同上,依次判断执行即可
    (7)如果前面的表达式结果都为假,执行else中的语句体n
  3. 注意事项:
    (1)有没有可能执行两条或者两条以上的语句体?
             不可能,因为执行其中一个之后,就直接结束
    (2)有没有可能语句体一句都不执行?
              如果加上else,一定会执行其中一句。
              如果不加else,可能一句也无法执行。
import java.util.Scanner;
class Demo03 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请录入一个整数:");
		int x = sc.nextInt();
		
		//先从上往下执行
		//如果表达式为真,就执行语句体,结束if语句
		//如果表达式为假,就不执行语句体,执行后面的表达式
		//如果表达式结果全都为假,执行else中的语句体
		if(x == 1){
			System.out.println("今天星期一");
		}else if(x == 2){
			System.out.println("今天星期二");
		}else if(x == 3){
			System.out.println("今天星期三");
		}else{
			System.out.println("今天放假了!!!");
		}
	}
}

switch语句

  1. 格式:
    switch(表达式){
    case 常量1:
    语句体1;
    break;
    case 常量2:
    语句体2;
    break;
    case 常量3:
    语句体3;
    break;

    default :
    语句体n;
    }
  2. 执行流程:
    (1)先获取表达式的值
    (2)将获取的值和常量1匹配,如果匹配,就执行语句体1,执行break,结束整个switch 语句
    (3)如果获取的值和常量1不匹配,不执行语句体1,和常量2匹配
    (4)如果能匹配上,就执行语句体2,执行break,结束整个switch语句
    (5)如果和常量2也不能匹配,同上,依次往下执行匹配
    (6)如果每一个常量都不能匹配,就执行default中的语句体n
import java.util.Scanner;
class Demo04 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请录入一个整数:");
		int x = sc.nextInt();

		//获取小括号中的值
		//从上往下依次匹配,相等就执行,执行之后结束
		//如果不相等,就往下继续匹配
		//如果每一个常量都不相等,就执行默认语句体
		switch(x){
			case 1:
				System.out.println("星期一!");
				break;
			case 2:
				System.out.println("星期二!");
			    break;
			case 3:
				System.out.println("星期三!");
			    break;
			default:
				System.out.println("放假了!");
		}
	}
}

switch语句的注意事项

  1. switch小括号中的表达式结果必须是以下类型的结果:
    byte char short int String 枚举
  2. case后面的值必须是常量,不能定义变量
  3. 一般情况,每一个语句体后面都要跟上break;
    如果不跟,发生case穿透
  4. default语句可以加也可以不加
    如果不加,有可能语句体一句无法执行
    如果加上,至少能执行一句
  5. default语句可以放在switch语句中的任何位置
    不管放在哪一个位置,都是最后去匹配
    如果将default语句放在前面或者中间位置,需要加上break防止发生穿透
  6. switch语句结束的条件:
    (1)执行break;
    (2)碰到右大括号
上一篇:day04_流程控制语句


下一篇:JavaScript基础学习笔记 day04