Java程序设计的基本结构 - 选择结构

简介: Java程序设计的基本结构 - 选择结构

一、if-else结构

使用if-else选择结构时,一个最基本的原则就是一定会有一个判断条件,并且如果出现else一定会有一个与之对应的if。

  • 代码格式:if(判断条件){}else{}
  • 判断条件部分可以直接使用布尔值:true/false
  • 如果使用表达式作为判断条件则必须要保证最终的计算结果为布尔类型

对于switch-case结构,整体的结构与if-else不同,虽然也是进行判断,但是switch-case是指定一个变量或表达式作为需要比对的值,通过case来罗列与之匹配的值,并写出该情况下需要执行的代码。

  • 代码格式:switch(变量或表达式){case 匹配值:代码片段;default:代码片段;}
  • 变量或表达式结果的类型只能为:整数类型(byte、short、int),字符串String,字符char,枚举enum
  • case本身具有穿透的特点,会从一个匹配的case进入执行,直到遇到break;为止
  • default关键字可以不出现,如果出现只能出现在最后的位置,在所有case都没有匹配时执行(如果离default最近的一个case没有使用break,则也可能会被执行)

1. 单if结构

单if结构是最简单的选择结构,表达的含义是:符合条件时,执行部分代码,不符合条件时,什么都不做,继续执行选择结构之后的代码。需要注意的是,if用小括号装一个条件,默认只能控制一条语句,如果需要控制多条语句需要使用大括号。

public static void main(Stirng[] args){
    // 假如有如下场景:你每天回家都要汇报你的考试成绩和完成家庭作业
    // 如果你考的不错(90分以上),那么就会得到一次夸奖
    // 如果考的不怎么样,就什么都不会发生
    // 而且,不管考的怎么样,作业都是要完成的,就是如此的悲催
    int score = 92;
    if(score >= 90){
        // 为了避免不必要的麻烦,即使是一行代码我们也加上大括号,这招挺管用的!
        System.out.println("考的不错!");
    }
    System.out.println("开始写作业");
}

2. if-else结构

if-else结构是最基本的选择结构,明确一个判断条件后,指定条件成立时做什么,条件不成立时做什么。

public static void main(Stirng[] args){
    // 假如有如下场景:根据不同的年级进入不同的活动教室
    // 3年级及以下的学生进入活动室一
    // 其他年级学生进入活动教室二
    int grade = 2;
    if(grade <= 3){
        // 为了避免不必要的麻烦,即使是一行代码我们也加上大括号,这招挺管用的!
        System.out.println("进入活动教室一");
    }else{
        System.out.println("进入活动教室二");
    }
}

3. if-else if-else结构

如果我们需要具体判断的条件很多,那么我们就需要使用到多个if。需要注意的是,我们可以在一段程序中使用多个并列的if-else结构,但是这和if-eles if-else的结构并不等效,请看流程图。

并列的if-else结构,每个if后面都可以引导判断条件,但是相互之间相对独立,无关联。

// 伪代码如下:
public static void main(Stirng[] args){
    if(条件){
        // 程序代码
    }else{
        // 程序代码
    }
    if(条件){
        // 程序代码
    }else{
        // 程序代码
    }
}

对于if-else if-else结构,如果一个if中的条件为真,则其他的判断分支将不会执行,即使判断结果为真!

// 伪代码如下:
public static void main(Stirng[] args){
    if(条件){
        // 程序代码
    }else if(条件){
        // 程序代码
    }else{
        // 程序代码
    }
}

4. 嵌套结构

掌握了基本条件判断结构后,对于复杂问题可能需要使用到嵌套结构。比如某一个问题需要分两种或多种情况讨论,而这几种情况又需要进一步分多种情况讨论。

// 伪代码如下:
public static void main(Stirng[] args){
    if(条件){
        // 程序代码
        if(条件){
            // 程序代码
        }else{
            // 程序代码
        }
    }else{
        // 程序代码
    }
}

二、switch-case

switch-case结构也是选择结构的一种,主要使用在选择条件较多,并且主要是等值判断时。如果我们需要使用switch-case结构进行某一个范围的判断,那就需要下一点功夫来进行转换。

1. 含有break和default

在这种情况下会按次序进行判断执行匹配到的case后面的代码,执行完毕后直接结束switch-case结构,当所有的case都没有匹配时,会执行default相关的代码。

public static void main(Stirng[] args){
    String sex = "女";
    switch(sex){
        case "男":
            System.out.println("男生");
            break;
        case "女":
            System.out.println("女生");
            break;
        default:
            System.out.println("怕是变异了?");
    }
}

2. 无break

当case对应的值被匹配到后,对应的代码会被执行,由于没有break,将会继续执行下一个case对应的代码(包括default),直到整个switch-case都结束或遇到一个break为止。

public static void main(Stirng[] args){
    // 有的时候我们刚好可以利用一下穿透的特点,来进行区间的判断
    // 下面是一个经典案例:根据分数进行分档
    // 90-100:A,80-89:B,70-79:C,60-69:D,0-59:不及格,其他:错误的分数
    int score = 75;
    // switch的括号中可以使用表达式,只要计算结果的类型满足要求即可
    // 对分数进行区间的划分,相当于变向的范围判断
    switch(score / 10){
        case 10:
            // 此处什么都不填写,匹配到之后自动去执行case9对应的代码
            // 但是case10不能省略,否则会丢失100分时的情况
        case 9:
            System.out.println("A");
            break;
        case 8:
            System.out.println("B");
            break;
        case 7:
            System.out.println("C");
            break;
        case 6:
            System.out.println("D");
            break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            // 继续使用穿透的特点,表示0-59分时的情况
            System.out.println("不及格");
            break;
        default:
            // 当分数为负数或大于100分时执行这部分的代码
            System.out.println("成绩录入有误");
    }
}


目录
相关文章
|
27天前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
109 63
|
1月前
|
存储 算法 Java
🚀Java零基础-顺序结构详解 🚀
【10月更文挑战第11天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
34 6
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
44 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
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包实现转换的问题如何解决
|
3月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
64 0
下一篇
无影云桌面