杰瑞科技汇

java while do循环

这两种循环都属于“条件循环”,意味着它们会反复执行一段代码,直到某个条件不再满足为止,它们的主要区别在于条件判断的时机

java while do循环-图1
(图片来源网络,侵删)

while 循环

while 循环的特点是“先判断,后执行”

在每次循环开始之前,程序都会先检查 while 后面的条件表达式,如果条件为 true,则执行循环体内的代码;如果条件为 false,则直接跳过整个循环,继续执行循环后面的代码。

语法结构

while (条件表达式) {
    // 循环体 (当条件为 true 时,要执行的代码)
}

执行流程图

      [开始]
         |
         V
    [判断条件]
         |
    +----|----+
    |    |    |
   是    |    否
    |    |    |
    V    |    V
[执行循环体]   [跳出循环]
    |         |
    +---------+
         |
         V
       [结束]

示例代码

示例1:打印 1 到 5 的数字

public class WhileLoopExample {
    public static void main(String[] args) {
        int i = 1; // 1. 初始化循环变量
        // 2. 判断条件
        while (i <= 5) {
            System.out.println("当前数字是: " + i);
            // 3. 更新循环变量 (非常重要!)
            i++; 
        }
        System.out.println("循环结束。");
    }
}

输出结果:

java while do循环-图2
(图片来源网络,侵删)
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。

代码解析:

  1. int i = 1;:在循环开始前,我们必须定义并初始化一个控制循环的变量(称为循环变量)。
  2. while (i <= 5):进入循环前,首先判断 i 是否小于或等于 5。
    • 第一次,i 是 1,条件为 true,进入循环。
    • 打印 "当前数字是: 1"。
    • i++ 执行后,i 的值变为 2。
    • 第二次,再次判断 i <= 5i 是 2,条件为 true,再次进入循环。
    • ... 如此反复,直到 i 变为 6。
    • i 是 6 时,i <= 5 的条件为 false,循环终止,程序执行 System.out.println("循环结束。");

⚠️ 重要警告:无限循环

如果你忘记在循环体内更新循环变量,或者更新的条件永远无法让循环条件变为 false,就会造成无限循环,程序将无法自己停下来。

// 这是一个无限循环的例子!
// int j = 1;
// while (j <= 5) {
//     System.out.println("这会一直打印下去...");
// }
// // j 的值永远是 1,条件 j <= 5 永远为 true

do-while 循环

do-while 循环的特点是“先执行,后判断”

java while do循环-图3
(图片来源网络,侵删)

无论循环条件一开始是否为 truedo-while 循环体内的代码至少会执行一次,执行完一次后,再判断条件,如果为 true,则继续下一次循环;如果为 false,则退出循环。

语法结构

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

执行流程图

      [开始]
         |
         V
    [执行循环体]
         |
    [判断条件]
         |
    +----|----+
    |    |    |
   是    |    否
    |    |    |
    V    |    V
[继续循环]   [跳出循环]
    |         |
    +---------+
         |
         V
       [结束]

示例代码

示例1:打印 1 到 5 的数字

public class DoWhileLoopExample {
    public static void main(String[] args) {
        int k = 1; // 1. 初始化循环变量
        do {
            System.out.println("当前数字是: " + k);
            // 3. 更新循环变量
            k++;
        } while (k <= 5); // 2. 判断条件 (注意分号!)
        System.out.println("循环结束。");
    }
}

输出结果:

当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。

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

示例2:条件一开始就为 false 的情况

这个例子能最好地体现 do-whilewhile 的区别。

public class DoWhileFalseExample {
    public static void main(String[] args) {
        int number = 10;
        System.out.println("--- 使用 do-while 循环 ---");
        do {
            System.out.println("do-while 循环体内的代码被执行了!");
            number++;
        } while (number < 5); // 条件一开始就是 false (10 < 5)
        System.out.println("\n--- 使用 while 循环 ---");
        number = 10; // 重置变量
        while (number < 5) { // 条件一开始就是 false (10 < 5)
            System.out.println("while 循环体内的代码被执行了!");
            number++;
        }
        System.out.println("\n两个循环都结束了。");
    }
}

输出结果:

--- 使用 do-while 循环 ---
do-while 循环体内的代码被执行了!
--- 使用 while 循环 ---
两个循环都结束了。

结果分析:

  • do-while 循环:即使条件 number < 5 一开始就是 falsedo 块内的代码依然被执行了一次。
  • while 循环:因为条件一开始就是 false,所以循环体一次都没有被执行,直接跳过。

while vs do-while:核心区别总结

特性 while 循环 do-while 循环
执行顺序 先判断,后执行 先执行,后判断
执行次数 可能执行 0 次(如果条件一开始为 false) 至少执行 1 次
语法结构 while (条件) { ... } do { ... } while (条件);
适用场景 当循环体可能不需要执行时使用。 当循环体必须至少执行一次时使用,从用户获取输入,直到输入有效为止。

do-while 的典型应用场景

假设你需要从用户那里获取一个有效的年龄输入(1 到 120 之间),使用 do-while 就非常合适,因为无论如何,你都需要先提示用户输入一次。

import java.util.Scanner;
public class DoWhileUserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int age;
        // 使用 do-while 确保至少执行一次输入和验证
        do {
            System.out.print("请输入您的年龄 (1-120): ");
            age = scanner.nextInt();
            if (age < 1 || age > 120) {
                System.out.println("输入无效,请重新输入!");
            }
        } while (age < 1 || age > 120); // 如果输入无效,则继续循环
        System.out.println("您输入的年龄是: " + age + ",有效!");
        scanner.close();
    }
}

for 循环 vs while / do-while 循环

为了更全面地理解,我们通常还会将 while 系列与 for 循环进行比较。

循环类型 适用场景 特点
for 循环 当你确切知道循环需要执行的次数时。 初始化、条件判断、变量更新这三部分代码都集中在一行,结构清晰,不易出错。
while 循环 当循环次数不确定,依赖于某个动态变化的条件时。 结构更灵活,初始化可以在循环前,更新可以在循环体内的任何位置。
do-while 循环 当循环体必须至少执行一次时。 保证了至少一次的执行,常用于输入验证等场景。

  • 计数(如 1 到 100) -> 优先用 for
  • 条件驱动(如 while (isConnected)) -> 优先用 while
  • 至少一次(如获取用户输入) -> 优先用 do-while

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

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