do.......while语句

154 阅读3分钟

do...while 语句详解

do...while 是后测试循环结构(也叫直到型循环),核心特点是:先执行循环体,再判断条件,因此循环体至少会执行一次。它广泛应用于 C/C++、Java、JavaScript、C# 等编程语言,语法和逻辑高度相似。


一、基本语法(通用格式)

java

运行

do {
    // 循环体:需要重复执行的代码(可多行)
    语句1;
    语句2;
    // (可选)循环控制:如计数器自增/自减,避免死循环
} while (条件表达式);  // 注意:末尾的分号「;」必须加!

关键说明:

  • 条件表达式:返回布尔值(true/false,C 语言中「非 0 为真,0 为假」);
  • 循环体:即使条件一开始就不满足,也会先执行 1 次;
  • 分号while() 末尾的分号是语法要求,遗漏会导致编译 / 运行错误。

二、执行流程

  1. 先执行 do 块内的循环体代码
  2. 计算 while 后的条件表达式
  3. 若条件为 true(真),回到步骤 1,再次执行循环体;
  4. 若条件为 false(假),退出循环,执行后续代码。

流程图简化:

plaintext

开始 → 执行循环体 → 判断条件?→ 是→回到循环体 | 否→结束循环

三、核心区别(vs while 循环)

特性while 循环do...while 循环
执行顺序先判断条件,后执行循环体先执行循环体,后判断条件
执行次数可能 0 次(条件初始为假)至少 1 次(无论条件真假)
语法末尾无分号末尾必须有分号

四、示例代码

示例 1:基础用法(输出 1~5)

java

运行

// Java 示例(C/C++/JavaScript 语法完全一致)
public class DoWhileDemo {
    public static void main(String[] args) {
        int i = 1;  // 计数器
        
        do {
            System.out.println(i);  // 先执行:输出1
            i++;  // 计数器自增
        } while (i <= 5);  // 再判断:i=2→5时继续,i=6时退出
    }
}

输出结果:

plaintext

1
2
3
4
5

示例 2:条件初始为假(对比 while)

java

运行

public class CompareDemo {
    public static void main(String[] args) {
        int a = 10;
        
        // 1. while 循环:条件初始为假,循环体一次都不执行
        while (a < 5) {
            System.out.println("while 执行了");
            a--;
        }
        
        // 2. do...while 循环:条件初始为假,循环体仍执行1次
        do {
            System.out.println("do...while 执行了");
            a--;
        } while (a < 5);
    }
}

输出结果:

plaintext

do...while 执行了

示例 3:避免死循环(必须有循环控制)

c

运行

// C语言示例:输入数字,直到输入0退出
#include <stdio.h>

int main() {
    int num;
    do {
        printf("请输入一个数字(输入0退出):");
        scanf("%d", &num);
        printf("你输入了:%d\n", num);
    } while (num != 0);  // 输入0时条件为假,退出循环
    return 0;
}

五、常见注意事项

  1. 不要遗漏分号while() 末尾的分号是语法要求,新手易漏;

  2. 循环体单行时 {} 可省略:但建议始终加 {},避免逻辑错误(如后续加代码时误判作用域);

    java

    运行

    // 不推荐(易出错)
    do System.out.println(i); while (i <= 5);
    // 推荐
    do {
        System.out.println(i);
    } while (i <= 5);
    
  3. 避免死循环:循环体内必须有改变条件的逻辑(如 i++/num = 0),否则条件永远为真,循环无限执行;

  4. 条件表达式简洁:避免复杂逻辑,提高可读性。