杰瑞科技汇

Java do-while循环和while循环有啥区别?

什么是 do-while 循环?

do-while 循环是 Java 中三种基本的循环结构之一(另外两种是 for 循环和 while 循环),它的核心特点是:循环体中的代码至少会被执行一次,然后再判断循环条件,决定是否继续执行。

Java do-while循环和while循环有啥区别?-图1
(图片来源网络,侵删)

语法结构

do-while 循环的语法结构如下:

do {
    // 循环体
    // 在这里编写需要重复执行的代码
} while (循环条件); // 注意:分号 ; 是必须的!

执行流程

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

  1. 执行:无条件地执行 do { ... } 代码块中的内容(循环体)。
  2. 判断:执行完循环体后,计算 while ( ... ) 中的条件表达式。
  3. 循环或退出
    • 如果条件表达式为 true,则返回第 1 步,继续执行循环体。
    • 如果条件表达式为 false,则循环结束,程序执行 do-while 语句后面的代码。

流程图:

      +-----------+
      |   开始     |
      +-----------+
           |
           v
      +-----------+
      |  执行循环体 |
      +-----------+
           |
           v
      +-----------+
      |  判断条件   |
      +-----------+
           /   \
      (true)   (false)
          |       |
          +-------+
          |   结束   |
          +-------+

while 循环的关键区别

这是理解 do-while 循环最重要的部分。

Java do-while循环和while循环有啥区别?-图2
(图片来源网络,侵删)
特性 while 循环 do-while 循环
执行顺序 先判断,后执行 先执行,后判断
最少执行次数 0次(如果第一次条件就为 false,循环体一次都不会执行) 1次(无论条件是否为 false,循环体至少会执行一次)

简单记忆:

  • while:像保安,先检查你的证件(条件),没问题才让你进门(执行代码)。
  • do-while:像自助餐,你先拿食物(执行代码),吃完后再决定是否还要再拿(判断条件)。

代码示例

示例 1:基本用法

这个例子会打印数字 1 到 5。

public class DoWhileExample {
    public static void main(String[] args) {
        int i = 1;
        System.out.println("--- do-while 循环示例 ---");
        do {
            System.out.println("当前数字是: " + i);
            i++; // i 自增
        } while (i <= 5); // 当 i 小于等于 5 时,继续循环
        System.out.println("循环结束。");
    }
}

输出:

--- do-while 循环示例 ---
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。

示例 2:条件一开始就为 false(展示“至少执行一次”的特性)

让我们修改一下上面的例子,让初始条件 i 大于 5。

Java do-while循环和while循环有啥区别?-图3
(图片来源网络,侵删)
public class DoWhileExample2 {
    public static void main(String[] args) {
        int i = 10; // i 初始值为 10,大于 5
        System.out.println("--- 条件为 false 的 do-while 循环示例 ---");
        do {
            // 即使 while(i <= 5) 条件一开始就是 false,
            // do-while 循环依然会执行一次循环体
            System.out.println("这个循环体被执行了!i 的值是: " + i);
        } while (i <= 5); // 条件为 false,循环将在此结束
        System.out.println("循环结束。");
    }
}

输出:

--- 条件为 false 的 do-while 循环示例 ---
这个循环体被执行了!i 的值是: 10
循环结束。

分析: 尽管条件 10 <= 5false,但 do 块中的代码依然被执行了一次,这清晰地展示了 do-while 的核心特性。

示例 3:用户输入验证

do-while 循环非常适合用于需要至少执行一次的场景,比如菜单系统或用户输入验证。

import java.util.Scanner;
public class UserInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String choice;
        do {
            System.out.println("\n--- 主菜单 ---");
            System.out.println("1. 查看信息");
            System.out.println("2. 修改设置");
            System.out.println("3. 退出");
            System.out.print("请输入您的选择 (1-3): ");
            choice = scanner.nextLine();
            if (choice.equals("1")) {
                System.out.println("您选择了:查看信息");
            } else if (choice.equals("2")) {
                System.out.println("您选择了:修改设置");
            } else if (choice.equals("3")) {
                System.out.println("您选择了:退出");
            } else {
                System.out.println("无效的输入,请重新选择。");
            }
        } while (!choice.equals("3")); // 只要用户不输入 "3",循环就一直继续
        System.out.println("程序已退出。");
        scanner.close();
    }
}

使用场景总结

当你遇到以下情况时,do-while 循环是最佳选择:

  1. 需要至少执行一次:这是最常见的原因,显示一个菜单,无论用户第一次输入什么,菜单都必须先显示出来。
  2. 循环条件依赖于循环体内部的计算:有时,只有在执行完循环体后,你才能确定下一次是否需要继续循环,读取文件直到遇到文件尾,但你必须先尝试读取一次才能知道是否到达了文件尾。

注意事项

  • 不要忘记分号do-while 循环的 while 条件后面必须有一个分号 ,这是一个非常常见的初学者错误。
    // 错误示范
    do {
        // ...
    } while (i < 10) // 缺少分号!
  • 避免无限循环:确保循环条件在某个时刻会变为 false,否则循环将永远执行下去(无限循环)。
    // 这是一个无限循环,因为 i 的值永远不会改变
    int j = 1;
    do {
        System.out.println("j: " + j);
    } while (j > 0);

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

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