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-else和switch,让你的程序学会“灵活做选择”。
一、为什么需要分支结构?
先思考一个简单场景:编写程序判断一个整数是正数、负数还是零。如果只有顺序执行语句,我们只能依次输出“是正数”“是负数”“是零”,显然无法根据输入数值的实际情况给出正确结果。这时候就需要分支结构——它能根据条件判断的结果,决定执行哪一段代码,跳过其他无关代码。
简单来说,分支结构的核心作用是:根据不同条件,执行不同的代码块,让程序具备“判断能力”。
二、核心分支结构之一:if-else 结构
if-else是Java中最基础、最灵活的分支结构,它根据“布尔表达式的结果(true/false)”来决定执行路径。根据判断条件的复杂程度,可分为三种形式:单if、if-else、if-else if-else。
1. 单if结构:满足条件才执行
当只需要“满足某个条件时执行一段代码,不满足则不执行”时,使用单if结构。
语法格式:
if (布尔表达式) {// 条件为true时执行的代码块(语句体)
}
说明:
-
布尔表达式:必须返回true或false,比如
num > 0、age == 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 (表达式) {case 值1:// 表达式的值等于值1时执行的代码块1break; // 跳出switch结构(关键!)case 值2:// 表达式的值等于值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-else | switch只能匹配固定值,无法直接判断范围 |
| 固定值匹配(如星期、月份、枚举、字符串) | 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的用法是编程入门的关键:
-
if-else系列(单if、if-else、if-else if-else、嵌套):灵活应对范围判断和复杂逻辑,是通用型分支方案。
-
switch结构:适合固定值匹配场景,代码简洁,但需注意break的使用和表达式类型限制。
-
实际开发中,需根据判断场景选择合适的结构,同时注重代码可读性——避免过度嵌套、合理使用注释、规范代码格式。
若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/153793806
