核心概念
我们要明白 for 循环和 if-else 各自的作用:

for循环:用于重复执行一段代码,它通常在你事先知道循环次数(或循环结束条件)时使用,它会遍历一个序列(比如数组、集合)或者执行一个固定次数的操作。if-else语句:用于条件判断,它根据一个条件的真假(true或false)来决定执行哪一段代码,它只做一次判断,然后执行一个分支。
当它们组合在一起时,核心思想是:在循环的每一次迭代中,都加入一个条件判断。
“对于列表中的每一项,都检查一下它是否满足某个条件,如果满足就做 A,否则就做 B。”
基本语法结构
if-else 语句可以放在 for 循环的任何位置,但最常见的是放在循环体的内部。
for (初始化; 循环条件; 更新) {
// 循环体开始
// 在这里放置 if-else 语句
if (条件表达式) {
// 如果条件为 true,执行这里的代码
} else {
// 如果条件为 false,执行这里的代码
}
// 循环体结束
}
执行流程:

- 执行
for循环的初始化部分(int i = 0;)。 - 检查循环条件是否为
true(i < 5;)。- 如果为
false,循环结束,跳转到for循环后面的代码。 - 如果为
true,则进入循环体。
- 如果为
- 在循环体内部,执行
if-else语句:- 判断
if的条件表达式。 - 根据
true或false执行对应的代码块。
- 判断
- 执行完
if-else后,执行for循环的更新部分(i++)。 - 回到第 2 步,继续下一次循环。
代码示例
下面通过几个经典的例子来理解这个组合的强大之处。
示例 1:找出数组中的偶数和奇数
这是最经典的例子之一,我们遍历一个数字数组,对每个数字进行判断。
public class ForIfElseExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("遍历数组并判断奇偶数:");
// for 循环遍历数组
for (int i = 0; i < numbers.length; i++) {
int currentNumber = numbers[i];
// if-else 判断当前数字是偶数还是奇数
if (currentNumber % 2 == 0) {
// 如果条件为 true (能被 2 整除),则执行此代码块
System.out.println(currentNumber + " 是偶数");
} else {
// 如果条件为 false,则执行此代码块
System.out.println(currentNumber + " 是奇数");
}
}
}
}
输出结果:
遍历数组并判断奇偶数:
1 是奇数
2 是偶数
3 是奇数
4 是偶数
5 是奇数
6 是偶数
7 是奇数
8 是偶数
9 是奇数
10 是偶数
代码解析:
for 循环会依次取出 numbers 数组中的 1, 2, 3, ...,对于取出的每一个数字,if-else 语句都会判断一次它的奇偶性,然后打印出相应的结果。

示例 2:筛选出满足特定条件的元素
假设我们有一个学生分数列表,我们想找出所有及格(分数 >= 60)的学生。
public class PassOrFailExample {
public static void main(String[] args) {
int[] scores = {85, 45, 92, 58, 71, 60, 39};
System.out.println("找出所有及格的学生:");
for (int i = 0; i < scores.length; i++) {
int score = scores[i];
// if-else 判断分数是否及格
if (score >= 60) {
System.out.println("学生 " + (i + 1) + " 及格,分数: " + score);
} else {
// 这里我们不做任何事,或者可以打印不及格的信息
// System.out.println("学生 " + (i + 1) + " 不及格,分数: " + score);
}
}
}
}
输出结果:
找出所有及格的学生:
学生 1 及格,分数: 85
学生 3 及格,分数: 92
学生 5 及格,分数: 71
学生 6 及格,分数: 60
代码解析:
在这个例子中,else 分支是空的,这是完全合法的,我们只关心“及格”的情况,对于“不及格”的情况我们不需要执行任何操作,这展示了 if-else 组合的灵活性。
示例 3:在循环中使用 if-else if-else 进行多重判断
当一个条件有多个可能的结果时,我们可以使用 if-else if-else 链。
public class GradingExample {
public static void main(String[] args) {
int score = 78;
// for 循环模拟多次考试
for (int exam = 1; exam <= 3; exam++) {
System.out.print("第 " + exam + " 次考试的成绩是 " + score + ",评级为: ");
// if-else if-else 判断成绩等级
if (score >= 90) {
System.out.println("A (优秀)");
} else if (score >= 80) { // 注意:这里的条件是 score >= 80 且 score < 90
System.out.println("B (良好)");
} else if (score >= 60) { // 这里的条件是 score >= 60 且 score < 80
System.out.println("C (及格)");
} else { // 所有其他情况 (score < 60)
System.out.println("D (不及格)");
}
// 模拟分数变化
score -= 10;
}
}
}
输出结果:
第 1 次考试的成绩是 78,评级为: C (及格)
第 2 次考试的成绩是 68,评级为: C (及格)
第 3 次考试的成绩是 58,评级为: D (不及格)
代码解析:
for 循环执行了 3 次,在每一次循环中,if-else if-else 结构会从上到下检查条件,一旦找到一个为 true 的条件,就执行对应的代码块,然后跳过剩下的 else if 和 else,进入下一次循环。
最佳实践和注意事项
- 代码缩进:为了代码的可读性,请务必对
for循环和if-else内部的代码进行正确的缩进,这能清晰地展示代码的层级结构。 - 避免“深嵌套”:尽量避免将
for循环套在if里面,或者if套在for里面套得太深,如果逻辑过于复杂,可以考虑将内层逻辑提取成一个独立的方法,使代码更清晰。 - 作用域:
for循环中声明的变量(如int i)只在循环内部有效。 else的可选性:else块是可选的,如果你只关心条件为true的情况,可以只写if。
for 循环和 if-else 的组合是编程的基石,它让你能够:
- 批量处理:遍历一个集合(如数组、列表)。
- 智能筛选:在遍历的过程中,根据特定条件对元素进行分类、筛选或执行不同的操作。
掌握这个组合是迈向更复杂编程逻辑(如嵌套循环、处理复杂数据结构等)的关键一步,多写多练,很快你就能熟练运用它了。
