if条件语句
条件语句可根据不同的条件执行不同的语句。条件语句包括 if 条件语句与 switch 多分支语句。本节将向读者讲解条件语句的用法。
使用 if 条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字 if 之后是作为条件的 “布尔表达式”。如果该表达式返回的结果为 true,则执行其后的语句;如果为 false,则不执行 if 条件之后的语句。if 条件语句可分为简单的 if 条件语句、if…else 语句和 if…else if 多分支语句。
简单的if条件语句
简单的 if 条件语句是用于告诉程序在某种条件成立的情况下执行某一段语句,而在另一种条件成立的情况下执行另一段的语句。
简单的 if 条件语句的语法如下:
if(布尔表达式) {
语句序列
}
-
布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。
-
语句序列:可选参数。它可以是一条或多条语句,当表达式的值为 true 时执行这些语句。若语句序列中仅有一条语句,则可以省略条件语句中的 “{ }”。
如果语句序列中只有一条语句,则可以采用以下写法:
int a = 100;
if(a == 100)
System.out.print("a 的值是 100");
虽然 if 条件语句中的语句序列只有一条语句时,省略 “{ }” 并无语法错误,但为了增强程序的可读性,最好不要省略。条件语句后的语句序列被省略时:可以保留外面的大括号;也可以省略大括号,然后在末尾添加 “;”。如下所示的两种情况都是正确的:
|
简单的 if 条件语句的执行过程如图4.1所示。
【例4.1】判断手机号码是否存在(实例位置:资源包\TM\sl\4\1)
创建 TakePhone 类,模拟拨打电话场景,如果电话号码不是 84972266,则提示拨打的号码不存在。
public class TakePhone {
public static void main(String[] args) {
int phoneNumber = 123456789; // 创建变量,保存电话号码
if (phoneNumber != 84972266) { // 判断此电话号码是否是84972266
// 如果不是84972266号码,则提示号码不存在
System.out.println("对不起,您拨打的号码不存在!");
}
}
}
运行结果如下:
对不起,您拨打的号码不存在!
if..else语句
if…else 语句是条件语句中最常用的一种形式,它会针对某种条件有选择地做出处理。这通常表现为 “如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:
if(条件表达式) {
语句序列1
} else {
语句序列2
}
if 后面 “()” 内的表达式的值必须是 boolean 型的。如果表达式的值为 true,则执行紧跟 if 语句的复合语句;如果表达式的值为 false,则执行 else 后面的复合语句。if…else 语句的执行过程如图4.2所示。


同简单的 if 条件语句一样,如果 if…else 语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的 “{ }”。有时为了编程的需要,else 或 if 后面的 “{ }” 中可以没有语句。
【例4.2】使用if…else语句校验密码(实例位置:资源包\TM\sl\4\2)
在项目中创建 Login 类,在主方法中定义变量,并通过使用 if…else 语句判断变量的值,以决定输出结果。
public class Login {
public static void main(String[] args) {
int password = 987654321;// 密码值
if (123456789 == password) {// 如果密码是123456789
System.out.println("密码正确,欢迎登录");// 密码正确的提示
} else {// 否则
System.out.println("密码错误,拒绝登录");// 密码错误的提示
}
}
}
运行结果如下:
密码错误,拒绝登录
if..else if多分支语句
if…else if 多分支语句用于针对某一事件的多种情况进行处理。通常表现为 “如果满足某种条件,就进行某种处理;否则,如果满足另一种条件,则执行另一种处理”。语法如下:
if(条件表达式1) {
语句序列1
} else if(条件表达式2) {
语句序列2
}
...
else if(条件表达式n) {
语句序列n
}
-
条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为 boolean 类型。
-
语句序列:可以是一条或多条语句。当条件表达式 1 的值为 true 时,执行语句序列1;当条件表达式 2 的值为 true 时,执行语句序列2,以此类推。当省略任意一组语句序列时,可以保留其外面的 “{ }”,也可以将 “{ }” 替换为 “;”。
if…else if多分支语句的执行过程如图4.3所示。

【例4.3】使用 if…else if 语句实现饭店座位的分配(实例位置:资源包\TM\sl\4\3)
创建 Restaurant 类,声明整型变量 count 表示用餐人数,根据人数安排客人到 4人桌、8 人桌或包厢用餐。
public class Restaurant {
public static void main(String args[]) {
System.out.println("欢迎光临,请问有多少人用餐?"); // 输出问题提示
int count = 9; // 用餐人数
System.out.println("回答:" + count + "人");// 输出回答
if (count <= 4) { // 如果人数小于4人
System.out.println("客人请到大厅4人桌用餐"); // 请到4人桌
} else if (count > 4 && count <= 8) { // 如果人数在4-8人之间
System.out.println("客人请到大厅8人桌用餐"); // 请到4人桌
} else if (count > 8 && count <= 16) { // 如果人数在8-16人之间
System.out.println("客人请到楼上包厢用餐"); // 请到包厢
} else { // 当以上条件都不成立时,执行的该语句块
System.out.println("抱歉,我们店暂时没有这么大的包厢!"); // 输出信息
}
}
}
运行结果如下:
欢迎光临,请问有多少人用餐?
回答:9人
客人请到楼上包厢用餐
if语句的嵌套
if 语句和 if…else 语句都可以嵌套判断语句。在 if 语句中嵌套 if…else 语句。语法格式如下:
if (表达式1) {
if(表达式2)
语句1
else
语句2
}
在 if…else 语句中嵌套 if…else 语句。形式如下:
if (表达式1) {
if (表达式2)
语句1
else
语句2
}
else {
if (表达式2)
语句1
else
语句2
}
判断语句可以有多种嵌套方式,可以根据具体需要进行设计,但一定要注意逻辑关系的正确处理。
例如:使用嵌套的判断语句,判断控制台输入的年份是否是闰年;能被 4 整除且不能被 100 整除的年份,或者能被 400 整除的年份。代码如下:
import java.util.Scanner;
public class JudgeLeapYear {
public static void main(String[] args) {
int iYear; // 创建整型变量,保存输入的年份
Scanner sc = new Scanner(System.in); // 创建扫描器
System.out.println("please input number");
iYear = sc.nextInt(); // 在控制台上输入一个数字
if(iYear % 4 == 0) { // 如果能被 4 整除
if (iYear % 100 == 0) { // 如果能被 100 整除
if (iYear % 400 == 0) { // 如果能被 400 整除
System.out.println("it is a leap year"); // 是闰年
} else {
System.out.println("It is not a leap year"); // 不是闰年
}
} else
System.out.println("It is a leap year"); // 是闰年
}else
System.out.println("It is not a leap year"); // 不是闰年
}
}
当在控制台上输入 2024 时,运行结果如图4.4所示。
当在控制台上输入 2026 时,运行结果如图4.5所示。

