杰瑞科技汇

Java while与do-while语句的核心区别是什么?

这两种循环都用于在某个条件为 true 时,重复执行一段代码,它们的核心区别在于条件的检查时机

Java while与do-while语句的核心区别是什么?-图1
(图片来源网络,侵删)

while 循环

while 循环是一种“先判断,后执行”的循环结构。

它的工作流程是:

  1. 首先计算 while 关键字后面的条件表达式
  2. 如果条件表达式的结果为 true,则执行循环体(大括号 中的代码)。
  3. 执行完循环体后,再次回到第 1 步,重新检查条件。
  4. 如果条件表达式的结果为 false,则循环终止,程序继续执行 while 循环之后的代码。

语法格式:

while (条件表达式) {
    // 循环体 (要重复执行的代码)
}

特点:

Java while与do-while语句的核心区别是什么?-图2
(图片来源网络,侵删)
  • 入口条件判断:在每次循环开始前,都会检查条件。
  • 可能一次都不执行:如果一开始条件就是 false,那么循环体内的代码将永远不会被执行。

while 循环示例

示例 1:基本的 while 循环

public class WhileExample {
    public static void main(String[] args) {
        int count = 1; // 初始化计数器
        System.out.println("开始使用 while 循环打印数字 1 到 5:");
        // 条件是 count 小于或等于 5
        while (count <= 5) {
            System.out.println("当前数字是: " + count);
            count++; // 重要:更新计数器,否则会变成无限循环
        }
        System.out.println("循环结束。");
    }
}

输出:

开始使用 while 循环打印数字 1 到 5:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。

代码解析:

  1. int count = 1; 定义并初始化一个变量 count,通常称为“循环变量”或“计数器”。
  2. while (count <= 5) 检查 count 是否小于或等于 5。
  3. 第一次进入循环时,count 是 1,条件为 true,执行 System.out.println(...)
  4. count++count 的值增加 1,变为 2。
  5. 循环回到第 2 步,再次检查 count <= 5count 是 2,条件仍为 true,再次执行循环体。
  6. 这个过程一直重复,直到 count 变为 6。count <= 5 的结果为 false,循环终止。

无限 while 循环

如果你忘记在循环体内更新循环变量,或者条件永远无法为 false,就会导致无限循环。

Java while与do-while语句的核心区别是什么?-图3
(图片来源网络,侵删)
// 这是一个无限循环的例子,请勿在实际代码中轻易使用
// while (true) {
//     System.out.println("我永远在运行!");
// }

do-while 循环

do-while 循环是一种“先执行,后判断”的循环结构。

它的工作流程是:

  1. 首先执行一次 do 关键字后面的循环体
  2. 执行完循环体后,计算 while 关键字后面的条件表达式
  3. 如果条件表达式的结果为 true,则再次回到第 1 步,执行循环体。
  4. 如果条件表达式的结果为 false,则循环终止。

语法格式:

do {
    // 循环体 (至少会执行一次的代码)
} while (条件表达式); // 注意:这里的分号 `;` 不能少!

特点:

  • 出口条件判断:在每次循环结束后,才检查条件。
  • 至少执行一次:无论条件一开始是 true 还是 false,循环体内的代码至少会被执行一次。

do-while 循环示例

示例 2:基本的 do-while 循环

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;
        System.out.println("开始使用 do-while 循环打印数字 1 到 5:");
        // 先执行一次循环体,然后再检查条件
        do {
            System.out.println("当前数字是: " + count);
            count++;
        } while (count <= 5); // 别忘了分号!
        System.out.println("循环结束。");
    }
}

输出:

开始使用 do-while 循环打印数字 1 到 5:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。

在这个例子中,whiledo-while 的输出结果是一样的,因为条件在第一次执行时就是 true


do-while 循环的典型应用场景

do-while 循环非常适合用于“至少执行一次”的场景,比如获取用户输入。

示例 3:验证用户输入

import java.util.Scanner;
public class DoWhileUserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String password;
        String correctPassword = "secret123";
        // 至少会要求用户输入一次密码
        do {
            System.out.print("请输入密码: ");
            password = scanner.nextLine();
            if (!password.equals(correctPassword)) {
                System.out.println("密码错误,请重试!");
            }
        } while (!password.equals(correctPassword)); // 只要密码不正确,就继续循环
        System.out.println("密码正确!欢迎进入系统。");
        scanner.close();
    }
}

代码解析:

  1. 无论用户第一次输入什么,程序都会先执行 do 块中的代码,即提示输入并读取密码。
  2. 然后检查 while 的条件:!password.equals(correctPassword)(即“密码不等于正确密码”)。
  3. 如果用户输入错了,条件为 true,循环继续,再次要求输入。
  4. 只有当用户输入了正确的密码后,条件才为 false,循环结束。

如果这里用 while 循环,程序会先检查条件,但此时 password 还没有被赋值,逻辑上会变得复杂且不符合“至少输入一次”的需求。


while vs do-while 对比总结

特性 while 循环 do-while 循环
执行顺序 先判断条件,后执行循环体 先执行循环体,后判断条件
执行次数 可能执行 0 次(如果初始条件为 false 至少执行 1 次
语法 while (条件) { ... } do { ... } while (条件);
适用场景 当循环体可能不需要执行 当循环体必须至少执行一次时,如处理用户输入、菜单选择等
注意事项 容易因忘记初始化或更新变量而造成无限循环 别忘了结尾的分号

选择哪个?

  • 如果你不确定循环体是否应该被执行(检查一个列表是否为空再遍历),使用 while
  • 如果你的循环体必须至少执行一次(向用户提问直到得到有效答案),使用 do-while

希望这个详细的解释能帮助你完全理解 Java 中的 whiledo-while 循环!

分享:
扫描分享到社交APP
上一篇
下一篇