全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-09 5 分钟 ✍️ juanwangdev

while循环

while循环是先判断后执行的循环结构。

while循环语法

基本格式

Java
while (条件) {
    // 循环体
}

// 执行流程:
// 1. 判断条件
// 2. 条件为true:执行循环体,回到步骤1
// 3. 条件为false:结束循环

基本示例

Java
int i = 1;

while (i <= 5) {
    System.out.println(i);
    i++;
}
// 输出:1, 2, 3, 4, 5

while执行流程

先判断后执行

Java
int i = 10;

while (i < 5) {  // 先判断,i=10,条件为false
    System.out.println(i);  // 不执行
}

// while可能一次都不执行(条件初始为false)

执行过程示例

Java
int i = 1;

while (i <= 3) {
    System.out.println(i);
    i++;
}

// 执行过程:
// 1. i=1, i<=3 ? true → 输出1, i++
// 2. i=2, i<=3 ? true → 输出2, i++
// 3. i=3, i<=3 ? true → 输出3, i++
// 4. i=4, i<=3 ? false → 结束循环

while循环应用

不确定次数循环

Java
// 读取数据直到结束
Scanner scanner = new Scanner(System.in);
String input;

while (scanner.hasNextLine()) {
    input = scanner.nextLine();
    process(input);
}

// 处理队列元素
while (!queue.isEmpty()) {
    process(queue.poll());
}

条件满足循环

Java
int balance = 1000;
int price = 100;

while (balance >= price) {
    balance -= price;
    System.out.println("购买成功,余额:" + balance);
}
// 输出:购买成功直到余额不足

游戏循环

Java
boolean playing = true;

while (playing) {
    render();
    update();
    
    if (checkGameOver()) {
        playing = false;
    }
}

计数循环

Java
int count = 0;
int i = 1;

while (i <= 100) {
    if (i % 2 == 0) {
        count++;
    }
    i++;
}
// count = 50(偶数个数)

累加求和

Java
int sum = 0;
int i = 1;

while (i <= 100) {
    sum += i;
    i++;
}
// sum = 5050

while循环控制

break跳出循环

Java
int i = 1;

while (i <= 10) {
    if (i == 5) {
        break;  // 跳出循环
    }
    System.out.println(i);
    i++;
}
// 输出:1, 2, 3, 4

continue跳过当前

Java
int i = 0;

while (i < 5) {
    i++;
    if (i == 3) {
        continue;  // 跳过本次
    }
    System.out.println(i);
}
// 输出:1, 2, 4, 5(跳过3)

无限循环与退出

Java
while (true) {  // 无限循环
    String input = getInput();
    
    if ("exit".equals(input)) {
        break;  // 输入exit退出
    }
    
    process(input);
}

while注意事项

避免无限循环

Java
int i = 1;

// 错误:忘记更新变量,无限循环
// while (i <= 5) {
//     System.out.println(i);
//     // 缺少i++
// }

// 正确:循环体内更新变量
while (i <= 5) {
    System.out.println(i);
    i++;
}

条件初始为false

Java
int i = 10;

while (i < 5) {
    System.out.println(i);  // 不执行
}

// while先判断,条件初始为false则不执行

循环变量初始化

Java
// 循环变量必须先初始化
int i = 0;  // 初始化
while (i < 10) {
    System.out.println(i);
    i++;
}

// 未初始化会报错
// while (j < 10) {  // 错误:j未初始化
// }

while与for对比

使用场景对比

特性whilefor
判断时机先判断后执行先判断后执行
循环次数不确定次数确定次数
初始化循环前初始化循环内初始化
更新循环体内更新循环头更新
适用场景条件循环、不确定次数计数循环、遍历
Java
// while:不确定次数
while (hasMoreData()) {
    process();
}

// for:确定次数
for (int i = 0; i < 100; i++) {
    process();
}

等价转换

Java
// while循环
int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}

// 等价的for循环
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

while嵌套

嵌套while循环

Java
int i = 1;

while (i <= 3) {
    int j = 1;
    while (j <= 3) {
        System.out.println(i + ", " + j);
        j++;
    }
    i++;
}

while与for嵌套

Java
int row = 0;

while (row < 5) {
    for (int col = 0; col < 5; col++) {
        System.out.print("*");
    }
    System.out.println();
    row++;
}

while常见应用

输入验证

Java
Scanner scanner = new Scanner(System.in);
int age;

System.out.print("请输入年龄:");
age = scanner.nextInt();

while (age < 0 || age > 150) {
    System.out.print("年龄无效,请重新输入:");
    age = scanner.nextInt();
}

System.out.println("年龄:" + age);

数据处理

Java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Iterator<Integer> it = numbers.iterator();

while (it.hasNext()) {
    Integer num = it.next();
    if (num % 2 == 0) {
        it.remove();  // 删除偶数
    }
}

等待条件满足

Java
while (!isReady()) {
    try {
        Thread.sleep(100);  // 等待100毫秒
    } catch (InterruptedException e) {
        break;
    }
}
// 条件满足后继续

while最佳实践

条件清晰的用while

Java
// 条件驱动:while更自然
while (!queue.isEmpty()) {
    process(queue.poll());
}

// 计数驱动:for更简洁
for (int i = 0; i < queue.size(); i++) {
    process(queue.get(i));
}

确保条件能变为false

Java
int i = 1;

// 正确:条件最终为false
while (i <= 10) {
    System.out.println(i);
    i++;  // 确保i递增
}

// 错误:条件永远为true
// while (true) {
//     System.out.println("无限循环");
//     // 缺少退出条件
// }

简洁的条件表达式

Java
// 简洁条件
while (hasMore) { }

// 不推荐复杂条件在while头
// while (a > 0 && b > 0 && c > 0 && d > 0) { }
// 建议提取为方法
while (allPositive(a, b, c, d)) { }

要点总结

  • while(条件) {循环体}:先判断后执行
  • 条件为true执行,false结束
  • 可能一次都不执行(条件初始为false)
  • 循环体内必须更新条件变量
  • 避免忘记更新导致无限循环
  • 适合不确定次数的循环
  • 条件驱动循环用while
  • 计数循环用for更简洁
  • 循环变量需在循环前初始化
  • break跳出,continue跳过
  • while(true)为无限循环,需break退出
  • 确保条件最终能变为false

📝 发现内容有误?点击此处直接编辑

← 上一篇 switch语句
下一篇 → 关系运算符
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库