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

do-while循环

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

do-while语法

基本格式

Java
do {
    // 循环体
} while (条件);  // 注意分号

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

基本示例

Java
int i = 1;

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

do-while执行流程

先执行后判断

Java
int i = 10;

do {
    System.out.println(i);  // 先执行,输出10
} while (i < 5);  // 后判断,条件为false,结束

// do-while至少执行一次(即使条件初始为false)

执行过程示例

Java
int i = 1;

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

// 执行过程:
// 1. 执行循环体 → 输出1, i++
// 2. i=2, i<=3 ? true → 回到步骤1
// 3. 执行循环体 → 输出2, i++
// 4. i=3, i<=3 ? true → 回到步骤1
// 5. 执行循环体 → 输出3, i++
// 6. i=4, i<=3 ? false → 结束循环

do-while与while对比

执行顺序对比

特性do-whilewhile
执行顺序先执行后判断先判断后执行
最少执行次数至少1次可能0次
条件初始为false执行1次后结束不执行
Java
int i = 10;

// do-while:至少执行1次
do {
    System.out.println(i);  // 输出10
} while (i < 5);

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

使用场景对比

Java
// 需要至少执行一次:do-while
int input;
do {
    input = getInput();
} while (input < 0);  // 至少获取一次输入

// 可能不需要执行:while
while (hasData()) {
    process();  // 可能不执行
}

do-while应用场景

输入验证

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

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

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

菜单选择

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

do {
    System.out.println("1. 新建");
    System.out.println("2. 打开");
    System.out.println("3. 退出");
    System.out.print("请选择:");
    
    choice = scanner.nextInt();
    
    switch (choice) {
        case 1: create(); break;
        case 2: open(); break;
        case 3: break;
        default: System.out.println("无效选项");
    }
} while (choice != 3);

System.out.println("退出系统");

确认操作

Java
Scanner scanner = new Scanner(System.in);
String confirm;

do {
    performAction();
    
    System.out.print("是否继续?(y/n)");
    confirm = scanner.nextLine();
} while ("y".equalsIgnoreCase(confirm));

System.out.println("操作完成");

游戏回合

Java
boolean continueGame;

do {
    playRound();
    
    System.out.print("继续游戏?");
    continueGame = getConfirm();
} while (continueGame);

System.out.println("游戏结束");

重试机制

Java
int attempts = 0;
boolean success;

do {
    attempts++;
    success = tryConnect();
    
    if (!success) {
        System.out.println("连接失败,重试...");
    }
} while (!success && attempts < 3);

if (success) {
    System.out.println("连接成功");
} else {
    System.out.println("连接失败,超过最大尝试次数");
}

do-while循环控制

break跳出

Java
int i = 1;

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

continue跳过

Java
int i = 0;

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

do-while注意事项

分号不能省略

Java
int i = 1;

do {
    System.out.println(i);
    i++;
} while (i <= 5);  // 分号必须有

// 省略分号会编译错误
// } while (i <= 5)  // 错误

至少执行一次

Java
int i = 100;

do {
    System.out.println(i);  // 必定执行一次
} while (i < 5);  // 条件为false

// 注意:即使条件初始为false,也执行一次

避免无限循环

Java
int i = 1;

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

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

do-while嵌套

嵌套do-while

Java
int i = 1;

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

与其他循环嵌套

Java
int row = 0;

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

do-while最佳实践

需要至少执行一次时用do-while

Java
// 输入验证:至少需要一次输入
int age;
do {
    age = getAge();
} while (age < 0);

// 可能不需要执行时用while
while (hasData()) {
    process();  // 可能不执行
}

简洁的条件表达式

Java
// 简洁条件
do {
    process();
} while (needContinue());

// 不推荐复杂条件
// do {
// } while (a > 0 && b > 0 && c > 0);

确保条件能变为false

Java
int i = 1;

do {
    System.out.println(i);
    i++;  // 确保更新,条件最终为false
} while (i <= 10);

三种循环对比总结

循环类型执行顺序最少执行适用场景
for先判断后执行0次确定次数、遍历
while先判断后执行0次条件驱动、不确定次数
do-while先执行后判断1次至少执行一次
Java
// 确定次数:for
for (int i = 0; i < 10; i++) { }

// 条件驱动、可能不执行:while
while (hasData()) { }

// 至少执行一次:do-while
do {
    input = getInput();
} while (input < 0);

要点总结

  • do {循环体} while(条件);:先执行后判断
  • 至少执行一次(条件初始为false也执行一次)
  • while后的分号不能省略
  • 适合必须执行一次的场景
  • 输入验证常用do-while
  • 菜单选择、确认操作用do-while
  • 重试机制可用do-while
  • 条件驱动可能不执行用while
  • 确定次数用for更简洁
  • 循环体内必须更新条件变量
  • 避免忘记更新导致无限循环
  • break跳出,continue跳过

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

← 上一篇 break和continue
下一篇 → for循环
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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