当前位置: 首页 > news >正文

JAVA基础篇:分支结构——让程序学会“做选择”

JAVA基础篇:分支结构——让程序学会“做选择”

  • JAVA基础篇:分支结构——让程序学会“做选择”
    • 一、为什么需要分支结构?
    • 二、核心分支结构之一:if-else 结构
      • 1. 单if结构:满足条件才执行
        • 语法格式:
        • 说明:
        • 实例:判断一个数是否为正数
      • 2. if-else结构:二选一执行
        • 语法格式:
        • 实例:判断一个数是偶数还是奇数
      • 3. if-else if-else结构:多条件多选一
        • 语法格式:
        • 说明:
        • 实例:根据分数评定等级(0-100分)
      • 4. if-else嵌套:复杂条件的层层判断
        • 实例:判断一个数是否为正数且为偶数
    • 三、核心分支结构之二:switch 结构
      • 1. 基本语法格式
      • 2. 关键规则说明
      • 3. 实例演示
        • 实例1:根据星期数输出对应中文(基础用法)
        • 实例2:利用“穿透性”简化代码(同一逻辑的多个case)
        • 实例3:String类型的switch匹配(Java 7+支持)
    • 四、if-else 与 switch 的选择场景
    • 五、实战综合案例:模拟成绩查询系统
        • 运行示例1(合法分数):
        • 运行示例2(非法分数):
    • 六、总结

JAVA基础篇:分支结构——让程序学会“做选择”

在编程世界里,程序并非总是一成不变地顺序执行。就像我们日常生活中需要根据不同情况做选择——“如果天气下雨就带伞,否则就晒太阳”“根据考试分数评定优秀、合格或不合格”,Java程序也需要通过“分支结构”来实现这种“决策能力”。今天,我们就来系统学习Java中两大核心分支结构:if-elseswitch,让你的程序学会“灵活做选择”。

一、为什么需要分支结构?

先思考一个简单场景:编写程序判断一个整数是正数、负数还是零。如果只有顺序执行语句,我们只能依次输出“是正数”“是负数”“是零”,显然无法根据输入数值的实际情况给出正确结果。这时候就需要分支结构——它能根据条件判断的结果,决定执行哪一段代码,跳过其他无关代码。

简单来说,分支结构的核心作用是:根据不同条件,执行不同的代码块,让程序具备“判断能力”。

二、核心分支结构之一:if-else 结构

if-else是Java中最基础、最灵活的分支结构,它根据“布尔表达式的结果(true/false)”来决定执行路径。根据判断条件的复杂程度,可分为三种形式:单if、if-else、if-else if-else。

1. 单if结构:满足条件才执行

当只需要“满足某个条件时执行一段代码,不满足则不执行”时,使用单if结构。

语法格式:

if (布尔表达式) {// 条件为true时执行的代码块(语句体)
}
说明:
  • 布尔表达式:必须返回true或false,比如num > 0age == 18

  • 大括号{}:如果语句体只有一条语句,大括号可以省略;但为了代码可读性和后续维护,强烈建议始终加上大括号

实例:判断一个数是否为正数

public class IfDemo1 {public static void main(String[] args) {int num = 15;// 判断num是否为正数if (num > 0) {System.out.println(num + "是正数");}System.out.println("程序结束");}
}

运行结果:15是正数 程序结束(若num=-5,则只输出“程序结束”)。

2. if-else结构:二选一执行

当需要“满足条件执行A代码,不满足则执行B代码”时,使用if-else结构,实现“二选一”逻辑。

语法格式:

if (布尔表达式) {// 条件为true时执行的代码块A
} else {// 条件为false时执行的代码块B
}
实例:判断一个数是偶数还是奇数

public class IfDemo2 {public static void main(String[] args) {int num = 7;if (num % 2 == 0) { // 取余为0是偶数System.out.println(num + "是偶数");} else { // 否则是奇数System.out.println(num + "是奇数");}}
}

运行结果:7是奇数(若num=8,则输出“8是偶数”)。

3. if-else if-else结构:多条件多选一

当需要判断“多个互斥条件”,执行对应代码块时,使用if-else if-else结构,实现“多选一”逻辑。

语法格式:

if (布尔表达式1) {// 表达式1为true时执行的代码块1
} else if (布尔表达式2) {// 表达式1为false、表达式2为true时执行的代码块2
} else if (布尔表达式3) {// 前两个表达式为false、表达式3为true时执行的代码块3
} ... {// 更多条件
} else {// 所有表达式都为false时执行的代码块(可选)
}
说明:
  • 多个条件是“互斥”的,只要有一个条件为true,执行对应代码块后就会跳出整个if-else if-else结构,不再判断后续条件。

  • else部分是可选的,若所有条件都不满足且没有else,则不执行任何分支代码。

实例:根据分数评定等级(0-100分)

public class IfDemo3 {public static void main(String[] args) {int score = 85;if (score >= 90 && score <= 100) {System.out.println("等级:优秀");} else if (score >= 70 && score < 90) {System.out.println("等级:良好");} else if (score >= 60 && score < 70) {System.out.println("等级:合格");} else if (score >= 0 && score < 60) {System.out.println("等级:不合格");} else {System.out.println("分数输入错误!");}}
}

运行结果:等级:良好(若score=105,则输出“分数输入错误!”)。

常见误区:条件判断时注意“边界值”,比如分数评定中90分属于“优秀”,不能写成score > 90;同时要避免条件重叠,比如两个else if的条件都包含80分,会导致后续条件失效。

4. if-else嵌套:复杂条件的层层判断

当条件需要“层层递进判断”时,可以在if或else的代码块中再次嵌套if-else结构,实现复杂逻辑。

实例:判断一个数是否为正数且为偶数

public class IfNestedDemo {public static void main(String[] args) {int num = 12;if (num > 0) { // 第一层:判断是否为正数if (num % 2 == 0) { // 第二层:在正数基础上判断是否为偶数System.out.println(num + "是正数且为偶数");} else {System.out.println(num + "是正数但为奇数");}} else {System.out.println(num + "不是正数");}}
}

运行结果:12是正数且为偶数

嵌套层数不宜过多(建议不超过3层),否则会降低代码可读性,可通过后续学习的“方法”拆分逻辑。

三、核心分支结构之二:switch 结构

switch结构也是一种“多选一”的分支结构,它通过“匹配表达式的值与case后的值”来执行对应代码块,相比if-else if-else,当判断条件是“固定值匹配”时(如月份、星期、枚举等),switch的代码更简洁直观。

1. 基本语法格式


switch (表达式) {case1:// 表达式的值等于值1时执行的代码块1break; // 跳出switch结构(关键!)case2:// 表达式的值等于值2时执行的代码块2break;...case 值n:// 表达式的值等于值n时执行的代码块nbreak;default:// 表达式的值与所有case值都不匹配时执行的代码块(可选)break;
}

2. 关键规则说明

  • 表达式的类型:Java 7及以后支持byte、short、int、char、String类型,以及枚举类型(enum);不支持long、float、double等类型。

  • case值的要求:case后的值必须是“常量”(如1、“Monday”),不能是变量;且多个case的值不能重复。

  • break语句的作用:执行完case对应的代码块后,通过break跳出switch结构,避免“穿透执行”(即继续执行后续case的代码)。如果没有break,会从匹配的case开始,依次执行所有后续代码,直到遇到break或switch结束。

  • default的位置:default可放在任意位置,通常放在最后;无论位置在哪,只有所有case都不匹配时才会执行,且执行后建议加break。

3. 实例演示

实例1:根据星期数输出对应中文(基础用法)

public class SwitchDemo1 {public static void main(String[] args) {int week = 3;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("星期数输入错误(1-7)");break;}}
}

运行结果:星期三

实例2:利用“穿透性”简化代码(同一逻辑的多个case)

如果多个case对应相同的执行逻辑,可以省略中间case的break,利用穿透性实现简化。例如:判断星期几是工作日还是休息日。


public class SwitchDemo2 {public static void main(String[] args) {int week = 6;switch (week) {case 1:case 2:case 3:case 4:case 5: // 1-5都是工作日,共用同一代码块System.out.println("工作日,加油搬砖!");break;case 6:case 7: // 6-7是休息日System.out.println("休息日,好好放松!");break;default:System.out.println("星期数输入错误");break;}}
}

运行结果:休息日,好好放松!

小技巧:穿透性是switch的特性,合理使用可简化代码,但需谨慎——如果忘记加break导致意外穿透,会引发逻辑错误,所以非必要不建议滥用。

实例3:String类型的switch匹配(Java 7+支持)

public class SwitchStringDemo {public static void main(String[] args) {String season = "春天";switch (season) {case "春天":System.out.println("春暖花开,适合踏青");break;case "夏天":System.out.println("夏日炎炎,注意防暑");break;case "秋天":System.out.println("秋高气爽,硕果累累");break;case "冬天":System.out.println("寒风凛冽,注意保暖");break;default:System.out.println("季节输入错误");break;}}
}

运行结果:春暖花开,适合踏青

四、if-else 与 switch 的选择场景

两种分支结构都能实现“多选一”,但适用场景不同,选择合适的结构能让代码更优雅:

判断场景推荐使用原因
范围判断(如分数、年龄区间)if-else if-elseswitch只能匹配固定值,无法直接判断范围
固定值匹配(如星期、月份、枚举、字符串)switch代码更简洁,逻辑更清晰,执行效率略高
简单二选一逻辑if-else语法更简洁,无需定义case和break
复杂嵌套逻辑if-else嵌套switch嵌套可读性差,容易出错

五、实战综合案例:模拟成绩查询系统

结合if-else和switch,实现一个简单的成绩查询系统:输入学生姓名和分数,先判断分数是否合法,再评定等级,最后输出结果。


import java.util.Scanner; // 导入扫描器,用于接收用户输入public class ScoreQuerySystem {public static void main(String[] args) {// 1. 创建扫描器对象,接收用户输入Scanner scanner = new Scanner(System.in);// 2. 接收姓名和分数System.out.print("请输入学生姓名:");String name = scanner.next();System.out.print("请输入学生分数(0-100):");int score = scanner.nextInt();// 3. 关闭扫描器scanner.close();// 4. 用if-else判断分数合法性if (score < 0 || score > 100) {System.out.println("输入的分数不合法!请输入0-100之间的数值。");} else {// 5. 用switch评定等级(分数除以10取整,转化为固定值匹配)int level = score / 10;String grade = "";switch (level) {case 10:case 9: // 90-100分grade = "优秀";break;case 8: // 80-89分grade = "良好";break;case 7: // 70-79分grade = "中等";break;case 6: // 60-69分grade = "合格";break;default: // 0-59分grade = "不合格";break;}// 6. 输出结果System.out.println("学生" + name + "的成绩等级为:" + grade);}}
}
运行示例1(合法分数):

请输入学生姓名:张三
请输入学生分数(0-100):92
学生张三的成绩等级为:优秀
运行示例2(非法分数):

请输入学生姓名:李四
请输入学生分数(0-100):105
输入的分数不合法!请输入0-100之间的数值。

六、总结

分支结构是Java程序实现“决策能力”的核心,掌握if-else和switch的用法是编程入门的关键:

  1. if-else系列(单if、if-else、if-else if-else、嵌套):灵活应对范围判断和复杂逻辑,是通用型分支方案。

  2. switch结构:适合固定值匹配场景,代码简洁,但需注意break的使用和表达式类型限制。

  3. 实际开发中,需根据判断场景选择合适的结构,同时注重代码可读性——避免过度嵌套、合理使用注释、规范代码格式。

若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/153793806

http://www.dtcms.com/a/519744.html

相关文章:

  • SpringDataRedis 快速入门总结
  • 安徽省建设厅网站资料下载建了qq群 如何快速推广
  • 重庆做木门网站公司龙城区建设局网站
  • 手机网站支持微信支付做网站需要什么资料
  • P4766 [CERC2014] Outer space invaders 题解
  • CS5005:400mA,低噪声,电荷泵DC/DC转换电路
  • Spring 容器刷新流程(refresh)源码全解
  • 类型转换汇总 之C#
  • Python列表操作、条件判断、循环、函数定义
  • ps怎么在dw上做网站广州番禺发布网
  • UltraScale/+ FPGA实现万兆网的两种方式:GT核、10G Ethernet Subsystem核
  • 元宇宙重构社交生态:从平面互动到沉浸式情感连接
  • SaaS模式重构工业软件竞争规则,助力中小企业快速实现数字化转型
  • 利用AI大模型重构陈旧代码库 (Refactoring Legacy Codebase with AI)
  • 数字孪生技术 重构 智能仓储新生态
  • 从上下文工程到组织知识管理重构——HRBP在人机协同时代的新使命
  • 1.2亿老人需助听器:本土品牌如何以AI破局,重构巨头垄断市场?
  • DeepSeek-OCR本地部署教程:DeepSeek突破性开创上下文光学压缩,10倍效率重构文本处理范式
  • “AI导师”现象:生成式人工智能对教育主体性及教学范式的重构
  • 住房和城乡建设统计网站南沙滩做网站公司
  • 网站备案要啥公司网站建设的视频教程
  • 全平台内容排期与矩阵玩法
  • 基于Python的声音信号分类:从公开数据集到自定义音频的实践
  • Web 前端开发常用工具推荐与团队实践分享
  • 网站 mssql 数据库2023八月重点新闻事件
  • [特殊字符] 多环境 DCDN 缓存与 version 切换刷新方案
  • PY32F040单片机介绍(2)
  • WordPress 迭代演进总结
  • MongoDB 排序操作详解sort方法使用指南
  • 深圳p2p网站开发如何把网站扒下来