循环结构
循环结构允许我们重复执行一段代码,直到满足某个特定的条件为止,这样可以避免编写大量重复的代码,提高效率。

Java 中主要有三种循环:for 循环、while 循环和 do-while 循环。
for 循环
for 循环通常用于当你事先知道循环需要执行多少次时使用,它的结构非常清晰,包含三个部分。
语法格式:
for (初始化表达式; 循环条件; 更新表达式) {
// 循环体:要重复执行的代码
}
三个部分的含义:

- 初始化表达式:在循环开始时,只执行一次,通常用于初始化一个循环变量(如
int i = 0;)。 - 循环条件:在每次循环开始前都会被检查,如果条件为
true,则执行循环体;如果为false,则循环结束。 - 更新表达式:在每次循环体执行完毕后,执行一次,通常用于更新循环变量(如
i++)。
示例:打印 1 到 5 的数字
public class ForLoopExample {
public static void main(String[] args) {
System.out.println("使用 for 循环打印 1 到 5:");
// 初始化 i=0; 条件 i < 5; 每次循环后 i++
for (int i = 0; i < 5; i++) {
// 循环体
System.out.println("当前数字是: " + (i + 1));
}
}
}
执行流程:
int i = 0;:i被初始化为 0。i < 5;:检查i是否小于 5。0 < 5为true,进入循环体。- 打印 "当前数字是: 1"。
i++:i的值变为 1。- 再次检查
i < 5;。1 < 5为true,进入循环体。 - 打印 "当前数字是: 2"。
i++:i的值变为 2。- ... 重复此过程,直到
i变为 5。 - 当
i为 5 时,i < 5为false,循环结束。
while 循环
while 循环在不确定循环次数,但有一个明确的循环继续条件时非常有用,它会先检查条件,如果条件为 true,才执行循环体。
语法格式:

while (循环条件) {
// 循环体:要重复执行的代码
}
注意: while 的初始条件就是 false,那么循环体一次都不会执行。
示例:猜数字游戏(简化版)
public class WhileLoopExample {
public static void main(String[] args) {
int targetNumber = 10;
int guess = 0;
System.out.println("猜一个 1 到 20 之间的数字:");
// 只要 guess 不等于 targetNumber,就一直循环
while (guess != targetNumber) {
// 假设我们猜的数字是 5
guess = 5;
System.out.println("我猜的是: " + guess);
}
System.out.println("猜对了!");
}
}
执行流程:
guess初始为 0,targetNumber为 10。while (0 != 10):条件为true,进入循环。guess被赋值为 5。- 打印 "我猜的是: 5"。
- 再次检查
while (5 != 10):条件为true,再次进入循环。 guess再次被赋值为 5。- ... 这里会陷入无限循环,因为没有改变
guess的值来使其等于targetNumber,这说明了while循环中更新条件变量的重要性。
do-while 循环
do-while 循环和 while 循环非常相似,唯一的区别是:do-while 循环至少会执行一次循环体,因为它是在执行完循环体之后才检查条件的。
语法格式:
do {
// 循环体:至少执行一次
} while (循环条件);
示例:要求用户输入密码,至少输入一次
public class DoWhileExample {
public static void main(String[] args) {
String correctPassword = "123456";
String userInput;
do {
// 无论条件如何,这里的代码都会至少执行一次
System.out.println("请输入您的密码: ");
// 假设这里我们从控制台获取了输入
userInput = "wrong"; // 模拟第一次输入错误
System.out.println("您输入的是: " + userInput);
} while (!userInput.equals(correctPassword)); // 只有当输入正确时才停止
System.out.println("密码正确,欢迎登录!");
}
}
执行流程:
- 直接进入
do块,执行里面的代码。 - 打印提示信息,
userInput被赋值为 "wrong"。 - 执行到
while (!userInput.equals(correctPassword));。 - 检查条件:
"wrong".equals("123456")为false,!false为true。 - 因为条件为
true,所以循环继续。 - 再次进入
do块... - 直到
userInput的值变为 "123456",while条件才会为false,循环结束。
条件判断结构 if
if 语句用于根据一个条件的真假来决定是否执行某段代码,它是程序做出决策的基础。
if 语句
最基本的 if 语句,当条件为 true 时执行代码块。
语法格式:
if (条件表达式) {
// 如果条件为 true,则执行这里的代码
}
示例:判断年龄是否成年
int age = 20;
if (age >= 18) {
System.out.println("您已成年。");
}
if-else 语句
当条件为 true 时执行一个代码块,为 false 时执行另一个代码块。
语法格式:
if (条件表达式) {
// 如果条件为 true,则执行这里的代码
} else {
// 如果条件为 false,则执行这里的代码
}
示例:判断成绩是否及格
int score = 58;
if (score >= 60) {
System.out.println("恭喜,您及格了!");
} else {
System.out.println("很遗憾,您未及格。");
}
if-else if-else 语句(多分支判断)
当有多个条件需要依次判断时使用,它会从上到下检查条件,一旦某个条件为 true,就执行对应的代码块,并跳过后续的 else if 和 else。
语法格式:
if (条件1) {
// 如果条件1为 true,执行这里
} else if (条件2) {
// 如果条件1为 false 且条件2为 true,执行这里
} else if (条件3) {
// 如果条件1和条件2都为 false 且条件3为 true,执行这里
} else {
// 如果以上所有条件都为 false,执行这里
}
示例:根据分数评定等级
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("成绩不及格");
}
for 循环与 if 语句的结合使用
这是编程中最常见的组合之一,我们在一个循环中遍历一系列数据,然后使用 if 语句对每个数据进行判断和处理。
核心思想:
for循环:负责“遍历”(重复访问)。if语句:负责“筛选”(判断是否满足某个条件)。
示例1:找出一个数组中的所有偶数
public class ForIfExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("数组中的偶数有:");
// 1. 使用 for 循环遍历数组中的每一个数字
for (int i = 0; i < numbers.length; i++) {
int currentNumber = numbers[i];
// 2. 使用 if 语句判断当前数字是否是偶数
// 判断偶数的条件:能被 2 整除,即除以 2 的余数为 0
if (currentNumber % 2 == 0) {
// 3. 如果是偶数,就打印出来
System.out.println(currentNumber);
}
// 如果不是偶数,if 条件不成立,什么也不做,继续下一次循环
}
}
}
示例2:统计一个数组中偶数的个数
public class ForIfCountExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 1. 初始化一个计数器
int evenCount = 0;
// 2. 使用 for 循环遍历数组
for (int i = 0; i < numbers.length; i++) {
int currentNumber = numbers[i];
// 3. 使用 if 语句判断是否为偶数
if (currentNumber % 2 == 0) {
// 4. 如果是偶数,计数器加 1
evenCount++;
}
}
// 5. 循环结束后,打印最终结果
System.out.println("数组中共有 " + evenCount + " 个偶数。");
}
}
| 结构 | 关键字 | 用途 | 特点 |
|---|---|---|---|
| 循环结构 | for |
已知循环次数时使用 | 结构清晰,初始化、条件、更新三部分在一行 |
while |
未知循环次数,但有明确继续条件时使用 | 先判断,后执行,可能一次都不执行 | |
do-while |
未知循环次数,但需要至少执行一次时使用 | 先执行,后判断,至少执行一次 | |
| 条件判断 | if |
单条件判断 | 条件为 true 时执行 |
if-else |
二选一判断 | 根据条件是 true 还是 false 执行不同分支 |
|
if-else if-else |
多选一判断 | 从上到下判断,执行第一个为 true 的分支 |
掌握 for 循环和 if 语句是学习 Java 编程的基石,通过它们的组合,你可以处理大量重复性的任务并根据不同的情况做出不同的反应,从而编写出功能强大的程序。
