首页 > 编程笔记

Java if else if语句详解

实际开发中经常会遇到这样的情况,程序在不同的条件下,需要执行不同的逻辑代码。那么如何来实现呢?可以通过流程控制让程序分情况完成不同的业务逻辑。

if else语句

if else 是一个基本的流程控制语法,用于判断某个条件是否成立,然后执行不同的逻辑,基本语法如下:
if(判断条件){
//条件成立的代码
}else{
//条件不成立的代码
}
例如,商场举办促销活动,会员可参与有奖答题活动,得分大于 80 分即可获得满 100 减 20 优惠券一张,否则没有奖品,用 if else 语句实现这一场景,代码如下:
public class Test {
   public static void main(String[] args) {
      int score = 100;
      System.out.println("本次答题得分:"+score);
      if(score > 80) {
         System.out.println("恭喜您,获得满100减20优惠券一张!");
      }else {
         System.out.println("很遗憾,您没有中奖。");
      }
   }
}
运行结果为:

本次答题得分:100
恭喜您,获得满100减20优惠券一张!

将 score 改为 70,再次执行程序,运行结果为:

本次答题得分:70
很遗憾,您没有中奖。

多重if

if else 是构成一个逻辑分支的基本结构,描述了程序可能执行的两种逻辑。如果一个程序可能会存在 3 种甚至更多种逻辑,该如何实现呢?这种情况下可以使用多重 if。

例如,买衣服的时候根据身高来选择对应的尺码,身高(单位:cm)173 以下为 M 码,173~178 为 L 码,178 以上为 XL 码,请用程序实现这一逻辑,代码如下。
public class Test {
   public static void main(String[] args) {
      int height = 176;
      if(height > 178){
         System.out.println("XL码");
      }
      if(height >= 173 && height <= 178){
         System.out.println("L码");
      }
      if(height < 173){
         System.out.println("M码");
      }
   }
}
运行结果如下:

L码

对代码进行修改,使用 if else 的结构来完成,具体思路应该是这样的:先划分出身高(身高:cm)大于 178 和身高小于等于 178,再将身高小于等于 178 的代码块划分为身高大于等于 173 和身高小于 173,具体实现代码如下。
public class Test {
   public static void main(String[] args) {
      int height = 176;
      if(height > 178){
         System.out.println("XL码");
      }else {
         if(height >= 173) {
            System.out.println("L码");
         }else {
            System.out.println("M码");
         }
      }
   }
}

同时还可以再次变换写法,代码如下。
public class Test {
   public static void main(String[] args) {
      int height = 176;
      if(height > 178){
         System.out.println("XL码");
      }else if(height >= 173) {
         System.out.println("L码");
      }else {
         System.out.println("M码");
      }
   }
}
if else 的使用是比较灵活的,可以根据不同情况选择不同的组合方式,需要注意的是:

if嵌套

再次升级难度,如果遇到条件中包含子条件,那么使用单一的 if else 或者多重 if 已经不能满足需求了,它们只能在一个维度处理逻辑,如果再增加一个维度,就需要使用 if 嵌套来完成。

例如,某组织举办电子竞技大赛,预赛成绩在 80 分以上的可以进入决赛,根据年龄分别进入 A 组(20 岁及 20 岁以上)和 B 组(18~19 岁)。

本题是一个典型的条件中包含子条件的逻辑结构,第一维的条件是成绩大于 80 分,在此条件成立的基础上,第二维的条件是年龄大于等于 20 岁和年龄大于等于 18 并且小于 20,所以使用 if 嵌套可以实现,
public class Test {
   public static void main(String[] args) {
      int score = 90;
      int age = 22;
      if(score > 80){
         if(age >= 20){
            System.out.println("成功晋级A组");
         }else if(age >= 18){
            System.out.println("成功晋级B组");
         }
      }
   }
}
运行结果如下:

成功晋级A组

推荐阅读