杰瑞科技汇

do while循环与while循环有何关键区别?

do-while 循环是 Java 中三种主要的循环结构之一(另外两种是 for 循环和 while 循环),它的核心特点是 “先执行,后判断”

do while循环与while循环有何关键区别?-图1
(图片来源网络,侵删)

do-while 循环的基本语法

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

语法解析:

  1. do: 关键字,表示循环的开始。
  2. 花括号,包含了需要重复执行的代码,称为循环体
  3. while (条件表达式): 在每次循环体执行完毕后,while 关键字会检查 条件表达式
    • 如果条件表达式为 true,则循环会继续,再次执行 do 后面的循环体。
    • 如果条件表达式为 false,则循环终止,程序会执行 do-while 循环之后的代码。
  4. 注意while (条件表达式); 结尾的分号 是必不可少的,这是一个非常容易出错的地方。

do-while 循环的执行流程

do-while 循环的执行顺序非常关键:

  1. 第一步:执行循环体

    • 程序会无条件地执行 dowhile 之间的代码块(循环体),无论条件是什么。
  2. 第二步:判断条件

    do while循环与while循环有何关键区别?-图2
    (图片来源网络,侵删)
    • 循环体执行完毕后,程序会计算 while 后面的条件表达式。
  3. 第三步:决定是否继续

    • 如果条件为 true:程序会跳转回第一步,再次执行循环体。
    • 如果条件为 false:循环结束,程序会跳出 do-while 结构,继续执行后续的代码。

流程图:

graph TD
    A[开始] --> B{执行 do 中的循环体};
    B --> C{判断 while 中的条件};
    C -- 条件为 true --> B;
    C -- 条件为 false --> D[循环结束, 执行后续代码];
    D --> E[结束];

do-while vs. while 循环

这是理解 do-while 循环最关键的一点,它与标准的 while 循环有本质区别:

特性 do-while 循环 while 循环
执行顺序 先执行,后判断 先判断,后执行
至少执行次数 至少执行一次 可能一次都不执行
适用场景 当循环体必须至少执行一次时使用 当循环体可能不需要执行时使用

示例对比:

假设我们有一个初始值为 10 的变量 i,条件是 i < 5

while 循环示例:

int i = 10;
System.out.println("--- while 循环 ---");
while (i < 5) { // 先判断条件: 10 < 5 为 false
    System.out.println("while 循环体被执行");
    i++;
}
System.out.println("while 循环结束");

输出结果:

--- while 循环 ---
while 循环结束

分析:因为 while 循环是“先判断”,条件 10 < 5false,所以循环体一次都没有被执行。

do-while 循环示例:

int i = 10;
System.out.println("\n--- do-while 循环 ---");
do { // 先执行循环体
    System.out.println("do-while 循环体被执行");
    i++;
} while (i < 5); // 后判断条件: 11 < 5 为 false
System.out.println("do-while 循环结束");

输出结果:

--- do-while 循环 ---
do-while 循环体被执行
do-while 循环结束

分析:因为 do-while 循环是“先执行”,所以无论条件是否满足,循环体都会被执行一次,执行完后,i 变为 11,再判断 11 < 5false,循环结束。


实际应用场景

do-while 循环最常见的应用场景是输入验证

示例:要求用户输入一个 1 到 100 之间的数字,如果输入无效则要求重新输入。

import java.util.Scanner;
public class DoWhileExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = 0;
        // 使用 do-while 确保提示信息至少显示一次
        do {
            System.out.print("请输入一个 1 到 100 之间的数字: ");
            number = scanner.nextInt();
            // 检查输入是否有效
            if (number < 1 || number > 100) {
                System.out.println("输入无效,请重新输入!");
            }
        } while (number < 1 || number > 100); // 如果输入无效,条件为 true,继续循环
        System.out.println("恭喜!您输入了有效的数字: " + number);
        scanner.close();
    }
}

程序运行示例:

请输入一个 1 到 100 之间的数字: 0
输入无效,请重新输入!
请输入一个 1 到 100 之间的数字: 150
输入无效,请重新输入!
请输入一个 1 到 100 之间的数字: 50
恭喜!您输入了有效的数字: 50

在这个例子中,我们必须先向用户显示提示信息并获取输入,然后才能判断输入是否有效。“先执行,后判断”的 do-while 循环是完美选择。


注意事项

  1. 分号 不能少do-while 循环的 while 语句末尾必须有一个分号。

    // 正确
    do {
        // ...
    } while (condition);
    // 错误!编译器会报错
    do {
        // ...
    } while (condition) 
  2. 避免无限循环:确保循环体内的代码能够最终改变条件表达式的值,使其变为 false,否则循环将永远执行下去,导致程序“卡死”。

    // 这是一个无限循环的例子!
    int count = 1;
    do {
        System.out.println("Count: " + count);
        // 忘记在这里增加 count 的值
    } while (count <= 10); // count 永远是 1,条件永远为 true
  • do-while 循环先执行一次循环体,然后再判断条件,如果条件为 true,则继续循环。
  • 核心特点:循环体至少执行一次
  • 语法do { ... } while (condition);
  • 最佳实践:适用于需要先执行操作再进行判断的场景,尤其是输入验证,当循环体可能一次都不需要执行时,应使用 while 循环。
分享:
扫描分享到社交APP
上一篇
下一篇