源本科技 | 码上会

Java 中的 while 循环

2025/12/25
13
0

学习目标

  • 掌握 Java while 循环的基本语法与执行流程

  • 理解 while 循环与 for 循环的适用场景差异

  • 能够使用 while 循环实现重复操作和累加计算

  • 避免因缺少更新表达式导致的无限循环

  • 了解单语句循环体的书写规范


什么是 while 循环?

while 循环是 Java 中一种条件控制型循环结构,它会反复执行一段代码块,直到指定的条件变为 false。与 for 循环不同,while 更适用于循环次数未知依赖动态条件的场景。

✅ 核心特点:先判断条件,再决定是否执行循环体


基础示例:打印数字 1 到 5

public class WhileLoop {
    public static void main(String[] args) {
        int c = 1; // 初始化计数器
        
        while (c <= 5) {
            System.out.println(c);
            c++; // 更新计数器
        }
    }
}

输出结果:

1
2
3
4
5
  • 变量 c 初始值为 1

  • 每次循环前检查 c <= 5

    • 若为 true → 打印当前值,并将 c 加 1

    • 若为 false(即 c = 6)→ 跳出循环

  • 循环结束后,程序继续执行后续语句(本例中无)


while 循环的语法结构

while (条件表达式) {
    // 循环体:要重复执行的语句
    // 通常包含更新表达式(如 i++)
}

关键组成部分

组成部分

说明

条件表达式

每次循环开始前求值;若为 true 则进入循环体,否则终止循环

循环体

被重复执行的代码块

更新表达式

(通常在循环体内)用于修改循环变量,确保最终条件能变为 false

⚠️ 注意:如果省略大括号 {}while 仅将紧随其后的第一条语句视为循环体。

✅ 正确示例(单语句):

int i = 0;
while (i < 3)
    System.out.println(i++);

❌ 危险示例(意图执行两条语句但未加大括号):

int i = 0;
while (i < 3)
    System.out.println(i);  // 会被循环
    i++;                    // 不会被循环!只执行一次

执行流程图

执行顺序:

  1. 检查条件

  2. 若为真 → 执行循环体 → 更新变量 → 回到步骤 1

  3. 若为假 → 跳出循环

🔁 与 for 循环不同,while 不强制要求初始化和更新写在循环头部,需程序员自行管理。


实战示例

示例 1:重复打印消息 5 次

class whileLoop {
    public static void main(String args[]) {
        int i = 1;
        while (i < 6) {
            System.out.println("Hello World");
            i++;
        }
    }
}

输出:

Hello World
Hello World
Hello World
Hello World
Hello World

💡 应用场景:重试机制、用户输入验证、游戏主循环等。


示例 2:计算 1 到 10 的总和

class whileLoop {
    public static void main(String args[]) {
        int i = 1, sum = 0;
        
        while (i <= 10) {
            sum = sum + i;  // 或 sum += i;
            i++;
        }
        System.out.println("Summation: " + sum);
    }
}

输出: Summation: 55(因为 1+2+…+10 = 55)

✅ 这展示了 while累积计算中的典型用法。


while vs for:如何选择?

场景

推荐循环类型

原因

已知迭代次数(如遍历数组)

for

结构紧凑,变量作用域清晰

条件依赖外部状态(如读取文件直到 EOF)

while

更灵活,条件可动态变化

用户交互(如“输入 y 继续”)

while

循环次数无法预知

简单计数任务

两者皆可

for 更简洁


注意事项

1. 忘记更新循环变量

int x = 1;
while (x <= 5) {
    System.out.println(x);
    // 忘记 x++ → 条件永远为真!
}

❌ 程序将无限打印 1,最终可能因资源耗尽而崩溃。

2. 条件初始即为 false

int n = 10;
while (n < 5) {
    System.out.println("This won't print");
    n++;
}

✅ 这是正常行为,while先判断后执行


重点总结

要点

说明

执行时机

先判断条件,再决定是否执行循环体

适用场景

循环次数未知、依赖运行时条件

必须包含

条件表达式 + 循环体内更新逻辑(否则可能死循环)

大括号规则

单语句可省略 {},但多语句必须使用

与 for 区别

for 将初始化、条件、更新集中声明;while 更分散但更灵活


思考题

  1. 编写一个 while 循环程序,让用户不断输入数字,直到输入 0 为止,并输出所有输入数字的总和。

  2. 如果将 while (true)break 结合使用,能否模拟 for 循环的行为?请尝试实现打印 1 到 5。

  3. 在什么情况下,使用 do-whilewhile 更合适?(提示:考虑循环体至少执行一次的需求)