Java 循环控制
Java - 循环控制
Section titled “Java - 循环控制”循环是编程中基本的控制结构,允许你重复执行一个代码块,只要某个条件仍然为真,或者执行特定次数的迭代。
Java 提供了几种循环机制:
while循环:只要条件为真就重复执行一个代码块(在每次迭代之前检查)。do...while循环:类似于while,但在代码块执行之后检查条件,保证至少执行一次。for循环:通常用于事先已知迭代次数的情况。它在每次迭代中初始化计数器、检查条件并更新计数器。- 增强型
for循环(或 for-each 循环):提供了一种简洁的方式来遍历数组或集合中的元素。
while 循环
Section titled “while 循环”while 循环只要给定的布尔条件为 true,就重复执行目标语句。条件在循环体执行之前检查。
while (boolean_expression) { // 重复执行的语句 // 通常包含最终使表达式为假的逻辑}流程:首先评估 boolean_expression。如果为 true,则执行循环体内的语句。然后,再次评估表达式。这个过程重复进行,直到表达式变为 false。如果表达式最初就是 false,则循环体永远不会执行。
public class WhileLoopExample { public static void main(String[] args) { int count = 0; // 初始化
while (count < 5) { // 条件检查 System.out.println("Current count: " + count); count++; // 更新(避免无限循环至关重要!) } System.out.println("Loop finished."); }}输出:
Current count: 0Current count: 1Current count: 2Current count: 3Current count: 4Loop finished.do...while 循环
Section titled “do...while 循环”do...while 循环类似于 while 循环,但条件在循环体执行之后测试。这保证了即使条件最初为假,循环体也至少会运行一次。
do { // 要执行的语句 // 更新逻辑通常在这里} while (boolean_expression);流程:首先执行循环体内的语句。然后,评估 boolean_expression。如果为 true,则循环重复。如果为 false,则循环终止。
import java.util.Scanner;
public class DoWhileExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int number;
do { System.out.print("Enter a positive number (or 0 to exit): "); number = scanner.nextInt(); if (number > 0) { System.out.println("You entered: " + number); } } while (number > 0); // 在执行后检查条件
System.out.println("Exiting program."); scanner.close(); }}示例交互:
Enter a positive number (or 0 to exit): 10You entered: 10Enter a positive number (or 0 to exit): 5You entered: 5Enter a positive number (or 0 to exit): 0Exiting program.for 循环
Section titled “for 循环”for 循环提供了一种简洁的方式来迭代特定次数。它将循环控制变量的初始化、条件检查和更新结合到一行中。
for (initialization; boolean_expression; update) { // 要执行的语句}控制流程:
- 初始化 (Initialization): 在最开始时执行一次。通常声明并初始化一个循环计数器变量(例如,
int i = 0)。 - 条件检查 (Condition Check):
boolean_expression在每次迭代之前(包括第一次)求值。如果为true,则执行循环体。如果为false,则循环终止。 - 循环体执行 (Loop Body Execution): 如果条件为
true,则执行循环体内的语句。 - 更新 (Update): 在每次迭代的循环体执行完毕后执行。通常递增或递减循环计数器(例如,
i++,i--)。 - 流程然后返回步骤 2(条件检查)。
public class ForLoopExample { public static void main(String[] args) { // 从 0 循环到 5(不包括 5) for (int i = 0; i < 5; i++) { System.out.println("Iteration number: " + i); } System.out.println("For loop finished."); }}输出:
Iteration number: 0Iteration number: 1Iteration number: 2Iteration number: 3Iteration number: 4For loop finished.增强型 for 循环(for-each)
Section titled “增强型 for 循环(for-each)”增强型 for 循环于 Java 5 引入,简化了对数组和集合的迭代。它消除了对索引管理的需要。
for (ElementType element : collectionOrArray) { // 使用 'element' 的语句}ElementType:集合或数组中元素的 数据类型。element:在循环中声明的变量名。在每次迭代中,它持有序列中的当前元素。collectionOrArray:要迭代的数组或集合对象(例如,ArrayList、HashSet)。
import java.util.ArrayList;import java.util.List;
public class EnhancedForExample { public static void main(String[] args) { // 数组示例 int[] numbers = {10, 20, 30, 40, 50}; System.out.println("Iterating over array:"); for (int number : numbers) { System.out.print(number + " "); } System.out.println("\n");
// List(集合)示例 List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); System.out.println("Iterating over List:"); for (String name : names) { System.out.print(name + " "); } System.out.println(); }}输出:
Iterating over array:10 20 30 40 50
Iterating over List:Alice Bob Charlie循环控制语句:break 和 continue
Section titled “循环控制语句:break 和 continue”Java 提供了一些语句来改变循环执行的正常流程。
break 关键字
Section titled “break 关键字”break 关键字用于立即终止最内层循环(while、do-while、for)或 switch 语句。执行会跳到被终止的循环或 switch 之后的语句。
`break;`public class BreakExample { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50};
for (int number : numbers) { if (number == 30) { System.out.println("Found 30, breaking loop."); break; // 立即退出循环 } System.out.println("Processing: " + number); } System.out.println("After the loop."); }}输出:
Processing: 10Processing: 20Found 30, breaking loop.After the loop.continue 关键字
Section titled “continue 关键字”continue 关键字跳过最内层循环(while、do-while、for)当前迭代的其余部分,并直接进入下一次迭代。
- 在
for循环中,continue会跳到更新语句。 - 在
while或do-while循环中,continue会跳到条件检查。
`continue;`public class ContinueExample { public static void main(String[] args) { for (int i = 1; i <= 5; i++) { if (i == 3) { System.out.println("Skipping iteration 3."); continue; // 跳过本次迭代的其余部分 } System.out.println("Processing iteration: " + i); } System.out.println("Loop finished."); }}输出:
Processing iteration: 1Processing iteration: 2Skipping iteration 3.Processing iteration: 4Processing iteration: 5Loop finished.选择合适的循环
Section titled “选择合适的循环”- 当你知道(或可以计算出)迭代次数时,使用
for循环。 - 当需要简单地遍历数组或集合中的所有元素,且不需要索引时,使用增强型
for(for-each) 循环。 - 当你需要根据条件进行循环,并且事先不知道迭代次数时,使用
while循环。它也适用于循环可能根本不需要执行的情况。 - 当你需要循环体至少执行一次,然后在检查条件时,使用
do-while循环。
接下来是什么?
Section titled “接下来是什么?”在学习了判断和循环之后,接下来的章节将更详细地探讨特定的数据类型,如数字、字符和字符串,以及相关的操作和方法。