跳到主要内容

Java If Else

在编程中,我们经常需要基于特定条件执行不同的代码块。Java 提供了 if-else 语句来实现这种条件性执行。这是 Java 编程中最基础也是最常用的控制流语句之一。

什么是条件语句?

条件语句允许程序根据特定条件的真假来决定执行哪段代码。想象一下,如果下雨了(条件),你会带伞(动作);否则,你不会带伞。这就是条件语句的基本逻辑。

基本 if 语句

最简单的条件语句是 if 语句,语法如下:

java
if (条件) {
// 当条件为 true 时执行的代码
}

当括号中的条件评估为 true 时,大括号 {} 中的代码块会被执行。如果条件为 false,程序将跳过该代码块。

示例:

java
public class BasicIfDemo {
public static void main(String[] args) {
int temperature = 25;

if (temperature > 20) {
System.out.println("今天天气很暖和!");
}
}
}

输出:

今天天气很暖和!

在这个例子中,因为温度 25 大于 20,所以条件 temperature > 20true,因此打印出 "今天天气很暖和!"。

if-else 语句

如果我们想在条件为 false 时执行另一段代码,可以使用 if-else 语句:

java
if (条件) {
// 当条件为 true 时执行的代码
} else {
// 当条件为 false 时执行的代码
}

示例:

java
public class IfElseDemo {
public static void main(String[] args) {
int temperature = 15;

if (temperature > 20) {
System.out.println("今天天气很暖和!");
} else {
System.out.println("今天天气有点凉!");
}
}
}

输出:

今天天气有点凉!

在这个例子中,因为温度 15 不大于 20,所以条件 temperature > 20false,因此执行 else 块中的代码,打印出 "今天天气有点凉!"。

if-else-if 语句

当我们需要测试多个条件时,可以使用 if-else-if 语句:

java
if (条件1) {
// 当条件1为 true 时执行的代码
} else if (条件2) {
// 当条件1为 false 且条件2为 true 时执行的代码
} else {
// 当所有条件都为 false 时执行的代码
}

示例:

java
public class IfElseIfDemo {
public static void main(String[] args) {
int score = 85;

if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}

输出:

良好

在这个例子中,分数 85 满足第二个条件 score >= 80,所以打印出 "良好"。注意,即使 85 也满足第三个条件 score >= 60,但由于程序已经执行了第二个条件对应的代码块,它会跳过后续的 else ifelse 块。

提示

在 if-else-if 语句中,条件是按顺序检查的,一旦某个条件满足,其对应的代码块会被执行,然后程序会跳过剩余的条件检查。

嵌套 if-else 语句

我们也可以在一个 ifelse 块中嵌套另一个 if-else 语句:

java
if (外部条件) {
// 外部条件为 true 时执行的代码
if (内部条件) {
// 内部条件为 true 时执行的代码
} else {
// 内部条件为 false 时执行的代码
}
} else {
// 外部条件为 false 时执行的代码
}

示例:

java
public class NestedIfElseDemo {
public static void main(String[] args) {
int age = 25;
boolean hasID = true;

if (age >= 18) {
System.out.println("您已成年");
if (hasID) {
System.out.println("您可以购买酒类产品");
} else {
System.out.println("请出示您的身份证");
}
} else {
System.out.println("您未成年,不能购买酒类产品");
}
}
}

输出:

您已成年
您可以购买酒类产品

在这个例子中,因为 age >= 18true,所以执行第一个打印语句。然后,因为 hasID 也为 true,所以执行内部 if 块中的打印语句。

警告

嵌套的 if-else 语句可能会使代码难以阅读和维护。如果嵌套层次太深,考虑重构代码,可能使用方法或其他控制流语句来简化逻辑。

三元运算符

Java 还提供了一种简写的条件表达式,称为三元运算符(ternary operator),语法如下:

java
条件 ? 表达式1 : 表达式2

如果条件为 true,整个表达式的值为 表达式1;如果条件为 false,整个表达式的值为 表达式2

示例:

java
public class TernaryOperatorDemo {
public static void main(String[] args) {
int age = 20;
String status = (age >= 18) ? "成年" : "未成年";
System.out.println(status);
}
}

输出:

成年

在这个例子中,因为 age >= 18true,所以 status 的值为 "成年"。

三元运算符适用于简单的条件判断,特别是当你需要基于条件给变量赋值时。但对于复杂的逻辑,还是应该使用标准的 if-else 语句以保持代码的清晰度。

实际应用场景

让我们看几个 if-else 语句在实际编程中的应用场景。

场景1:用户登录验证

java
public class LoginExample {
public static void main(String[] args) {
String username = "admin";
String password = "1234";

if (username.equals("admin") && password.equals("password123")) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误,请重试。");
}
}
}

输出:

用户名或密码错误,请重试。

场景2:商品折扣计算

java
public class DiscountCalculator {
public static void main(String[] args) {
double totalAmount = 1200.0;
double finalAmount;

if (totalAmount > 1000) {
finalAmount = totalAmount * 0.9; // 10% 折扣
System.out.println("您已获得10%的折扣!");
} else if (totalAmount > 500) {
finalAmount = totalAmount * 0.95; // 5% 折扣
System.out.println("您已获得5%的折扣!");
} else {
finalAmount = totalAmount; // 无折扣
System.out.println("消费满500元可享受折扣!");
}

System.out.println("最终金额:" + finalAmount + "元");
}
}

输出:

您已获得10%的折扣!
最终金额:1080.0元

场景3:成绩等级判定

java
public class GradeCalculator {
public static void main(String[] args) {
int score = 76;
char grade;

if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else if (score >= 60) {
grade = 'D';
} else {
grade = 'F';
}

System.out.println("学生成绩:" + score);
System.out.println("等级:" + grade);
}
}

输出:

学生成绩:76
等级:C

条件表达式的注意事项

  1. 布尔表达式:条件必须是能够评估为 boolean 类型(truefalse)的表达式。
  2. 比较运算符:常用于条件中的比较运算符包括 ==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)和 <=(小于等于)。
  3. 逻辑运算符:可以使用 &&(与)、||(或)和 !(非)来组合多个条件。
  4. 大括号 {}:即使 ifelse 块中只有一条语句,建议始终使用大括号,这样可以避免出现逻辑错误,并且使代码更加清晰。
注意

在比较对象时,使用 == 运算符比较的是对象引用是否相同,而不是对象的内容。如果要比较字符串内容是否相同,应该使用 equals() 方法,例如:str1.equals(str2)

总结

if-else 语句是 Java 中基本且强大的控制流机制,允许程序根据特定条件执行不同的代码块。

我们学习了:

  • 基本的 if 语句
  • if-else 语句
  • if-else-if 多重条件语句
  • 嵌套的 if-else 语句
  • 三元运算符作为简写的条件表达式
  • 实际应用场景中的 if-else 使用

掌握好 if-else 语句是编写有效 Java 程序的基础,它让你的代码能够根据不同情况做出相应的响应,从而实现更加智能和灵活的功能。

练习题

为了巩固你的学习,试试以下练习:

  1. 编写一个程序,根据用户输入的年龄,判断并输出他们属于哪个年龄组(儿童:0-12,青少年:13-19,成年人:20-59,老年人:60+)。
  2. 创建一个简单的计算器程序,根据用户输入的两个数和操作符(+、-、*、/),执行相应的计算并输出结果。
  3. 编写一个程序,判断用户输入的年份是否为闰年(提示:闰年的规则是能被4整除但不能被100整除,或者能被400整除)。

扩展阅读

掌握好 if-else 语句后,你可以继续学习其他控制流语句,如 switchwhile 循环和 for 循环,它们共同构成了 Java 编程的基础控制结构。