Java 流程控制语句——分支结构

Java 流程控制语句——分支结构

Java 流程控制语句大致分为三大结构:顺序结构、分支结构、选择结构。
其中顺序结构是程序默认的执行流程,按代码顺序从上到下依次执行的,就不过多的赘述了。


文章目录

  • Java 流程控制语句——分支结构
  • 一、if 条件分支语句
    • 1、if 语句
    • 2、if ··· else 语句
    • 3、if ··· else if ··· else 语句
  • 二、switch 语句


一、if 条件分支语句

1、if 语句

if 语句(单分支条件语句)

if 语句格式:

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

if 语句执行流程:

  • 先计算 关系表达式 的值
  • 如果 关系表达式的值为 true,则执行语句体
  • 如果 关系表达式的值为 false,则不执行语句体
  • 最后继续执行后面的其他语句
Created with Raphaël 2.3.0 开 始 表达式 语句体 其他语句 结 束 yes no

例1:任意输入一个年龄,判断是否已经成年,大于等于 18 则输出已成年,反之则什么都不输出

import java.util.Scanner;  //导入包,使用 Scanner 类实现键盘输入

public class Deom{
	public static void main(String[] args){
		System.out.println("请输入年龄");
		
		Scanner sc = new Scanner(System.in);  //使用 Scanner 类实现键盘输入
        int x = sc.nextInt();  //获取键盘输入的内容,并将数值赋值给 x
        
        if(x >= 18){
            System.out.println("已成年");
        }
	}
}

例2:使用 if 语句写一个判断灯的状态,灯没亮用 falg0 标记,灯亮了用 falg1 标记

注:如果用 布尔类型 的变量进行判断,直接把变量写在小括号里面就可以了,因为布尔类型的值不是 true 就是 false

public class Demo2{
	public static void main(String[] args){
		boolean falg0 = false;  //定义一个布尔类型变量 falg0,表示灯没亮
		boolean falg1 = true;  //定义一个布尔类型变量 falg1,表示灯亮了
		
		if(falg0){
			/*
				因为 falg0 的值为 false
				所以 if 语句不会执行该语句体,
				要想执行该语句体就要把 falg0 的值改为 true 才行
			*/
			System.out.println("灯没亮");  //这句不会被执行输出
		}
		if(falg1){
			System.out.println("灯亮了");  
		}
	}
}

2、if ··· else 语句

if ··· else 语句(二分支条件语句)

if ··· else 语句格式:

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

if ··· else 语句执行流程:

  • 先计算 关系表达式 的值
  • 如果 关系表达式的值为 true,则执行语句体1
  • 如果 关系表达式的值为 false,则执行语句体2
  • 最后继续执行后面的其他语句
Created with Raphaël 2.3.0 开 始 表达式 语句体1 其他语句 结 束 语句体2 yes no

例:任意输入一个成绩,判断是否及格,如果是及格了,则输出“恭喜你及格了!”;否则,输出“很遗憾,下次努力!”

import java.util.Scanner;  //导入包,使用 Scanner 类实现键盘输入

public class Demo{
    public static void main(String[] args) {
    	System.out.println("请输入成绩:");
    	
        Scanner sc = new Scanner(System.in);  //使用 Scanner 类实现键盘输入
        int score = sc.nextInt();  //获取键盘输入的内容,并将数值赋值给 score
        
        if(score >= 60){
            System.out.println("恭喜你,及格了!");
        }else{
            System.out.println("很遗憾,下次努力!");
        }
    }
}

3、if ··· else if ··· else 语句

if ··· else if ··· else 语句(多分支条件语句)

if ··· else if ··· else 语句格式:

if(关系表达式1){
	语句体1;
}else if(关系表达式2){
	语句体2;
}
······
}else if(关系表达式n-1){
	语句体n-1;
}else{
	语句体n;
}

if ··· else if ··· else 语句执行流程:

  • 先计算 关系表达式1 的值
  • 如果为 true 则执行 语句体1,如果为 false 则计算 关系表达式2 的值
  • 如果为 关系表达式2 的值 true 则执行 语句体2,如果为 false 则计算 关系表达式3 的值
  • ······(以此类推)
  • 如果上述的关系表达式都为 false,则执行 语句体n
  • 最后继续执行后面的其他语句
Created with Raphaël 2.3.0 开 始 表达式1 语句体1 其他语句 结 束 表达式2 语句体2 ****** 表达式n-1 语句体n-1 语句体n yes no yes no no yes no

例:满分为100分,任意输入一个 0~100 间的成绩,判断其优、良、中、差、不及格(优:成绩大于等于 90;良:成绩大于等于 80;中:成绩大于等于 70;差:成绩大于等于 60;不及格:成绩小于 60)

import java.util.Scanner;  //导入包,使用 Scanner 类实现键盘输入

public class Demo{
	public static void main(String[] args){
		System.out.println("请输入成绩:");

        Scanner sc = new Scanner(System.in);  //使用 Scanner 类实现键盘输入
        int score = sc.nextInt();  //获取键盘输入的内容,并将数值赋值给 score

        if (score >= 90) {
            System.out.println("你的成绩为:优");
        }else if(score >= 80){
            System.out.println("你的成绩为:良");
        }else if(score >= 70){
            System.out.println("你的成绩为:中");
        }else if(score >= 60){
            System.out.println("你的成绩为:差");
        }else {
            System.out.println("你的成绩为:不及格");
        }
	}
}

二、switch 语句

switch 语句(多分支条件语句),和 if ··· else if ··· else 语句类似,但是 if ··· else if ··· else 语句在分支比较多时就显得比较麻烦,程序可读性差且容易出错,所以就采用 switch 语句来处理分支比较多的情况;

switch 语句格式:

switch(表达式){
	case1:
		语句体1;
		break;
	case2:
		语句体1;
		break;
	  ···
	case 值n-1:
		语句体n-1;
		break;
	default
		语句体n;
		break;
}

switch 语句执行流程:

  • 先计算表达式的值
  • 用计算出来的值依次和 case 后面的值做比较;
  • 如果有相对应的值,就执行相对于的语句,在执行过程中遇到 break 就直接结束流程
  • 如果计算出来的值和 case 后面的值都不匹配,则执行 default 中的语句体,然后遇 break 就结束整个 switch 语句流程;
开始
表达式
值1
值2
******
值n-1
值n
default
表达式1
表达式2
******
表达式n-1
表达式n
表达式n+1
break
break
break
break
break
break
其他语句
结束

例1:做一个运动周计划,周一:跳绳;周二:跑步;周三:动感单车;周四:拳击;周五:游泳;周六:爬山;周天:休息;周几用数字 1~7 表示,任意输入一个星期数,输出要该天应该做什么运动

注:case 后面只能跟字面量(常量),不能是变量,并且 case 后面跟的值不能重复

import java.util.Scanner;  //导入包,使用 Scanner 类实现键盘输入

public class Demo{
	public static void main(String[] args) {
        System.out.println("请输入星期数:");

        Scanner sc = new Scanner(System.in);  //使用 Scanner 类实现键盘输入
        int week = sc.nextInt();  //获取键盘输入的内容,并将数值赋值给 week

        switch (week){  //switch(要匹配的值)
            case 1:  //case 后面跟被匹配的值
                System.out.println("跳绳");
                break;  //使用 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:  //上面所有情况都不匹配时,就执行 default 的语句体
                System.out.println("输入有误");
                break;
        }
    }
}

例2:类似例1,任意输入一个星期数,判断其是工作日还是休息日(周六周天)

注:当 break 被省略时,就会发生 case 穿透;如果程序执行时没有遇到 break 就会继续执行下一个 case 的语句体,直到遇到 break 或 } 时才会结束流程

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        System.out.println("请输入星期数:");

        Scanner sc = new Scanner(System.in);
        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;
        }
    }
}

如果文章对各位小伙伴有帮助的话欢迎三连!!!

另外,文章如有错误之处,也欢迎各位大佬批评指正!!!

你可能感兴趣的:(Java,java,算法,开发语言)