if 语句的主要功能是给程序提供一个分支。然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,这就需要使用多分支的 if…else if 语句。
通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件才执行另一种处理……,这些条件都不满足则执行最后一种条件”。
if…else if 多分支语句的语法格式如下所示:
- if(表达式1) {
- 语句块1;
- } else if(表达式2) {
- 语句块2;
- ...
- } else if(表达式n) {
- 语句块n;
- } else {
- 语句块n+1;
- }
可以看出,else-if 结构实际上是 if-else 结构的多层嵌套。明显的特点就是在多个分支中只执行一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。
在使用 if…else if 语句时,依次判断表达式的值,当某个分支的条件表达式的值为 true 时,则执行该分支对应的语句块,然后跳到整个 if 语句之外继续执行程序。如果所有的表达式均为 false,则执行语句块 n+1,然后继续执行后续程序,其运行流程如图 3 所示。
图3 if…else if 语句的执行流程
例 5
同样以比较 num1 和 num2 的大小为例,使用 if…else if 多条件的实现代码如下:
- public static void main(String[] args) {
- int num1 = 50;
- int num2 = 34;
- if (num1 == num2) { // 如果num1等于num2
- System.out.println("num1等于num2");
- } else if (num1 > num2) { // 如果num1大于num2
- System.out.println("num1大于num2");
- } else { // 否则就是小于
- System.out.println("num1小于num2");
- }
- }
如上述代码所示,num1 和 num2 不满足 if 语句的“num1==num2”条件,接着测试 else if 的“num1>num2”条件,满足该条件并输出“num1 大于 num2”。
例 6
假设某学校对成绩的判断标准是:不低于 90,可以评为优秀;低于 90 但不低于 80,可以评为良好;低于 80 但不低于 60,可以评为中等;否则评为差。
- public static void main(String[] args) {
- System.out.println("请输入考试成绩:");
- Scanner input = new Scanner(System.in);
- int score = input.nextInt(); // 接收键盘输入数据
- if (score >= 90) { // 考试成绩>=90
- System.out.println("优秀");
- } else if (score >= 80) { // 90>考试成绩>=80
- System.out.println("良好");
- } else if (score >= 60) { // 80>考试成绩>=60
- System.out.println("中等");
- } else { // 考试成绩<60
- System.out.println("差");
- }
- }
当考试成绩为 90 分以上时,则执行第一个 if 语句,下面的 3 个条件判断语句不会执行;当考试成绩为 80 分以上 90 分以下时,则执行第一个 else if 语句;当考试成绩在 60~80 分,并且包含 60 分的成绩,则执行第二个 else if 语句;如果上述 3 个条件都不满足,则执行 else 语句。
程序运行后的输出效果如下所示:
请输入考试成绩: 100 优秀
请输入考试成绩: 88 良好
请输入考试成绩: 50 差