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

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

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

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


一、if 条件分支语句

1、if 语句

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

if 语句格式:

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

if 语句执行流程:

  • 先计算 关系表达式 的值
  • 如果 关系表达式的值为 true,则执行语句体
  • 如果 关系表达式的值为 false,则不执行语句体
  • 最后继续执行后面的其他语句

1.jpg

例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
  • 最后继续执行后面的其他语句

2.jpg

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

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
  • 最后继续执行后面的其他语句

3.jpg

例:满分为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 语句流程;

4.jpg

例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;
        }
    }
}

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

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

相关文章
|
26天前
|
存储 算法 Java
🚀Java零基础-顺序结构详解 🚀
【10月更文挑战第11天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
32 6
|
4月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
69 0
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
41 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
3月前
|
存储 Java 数据库连接
Java类文件结构及类加载机制
该文章主要讨论了Java类文件的结构以及Java类的加载机制,并提到了双亲委派模型的相关内容。
Java类文件结构及类加载机制
|
3月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
|
3月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决