Java中的do-while循环:先执行后判断的循环机制

在Java的循环结构中,do-while循环是一种特殊的循环形式,它与while循环的主要区别在于执行顺序——do-while循环会先执行一次循环体,然后再判断循环条件。这种特性使得它在某些特定场景下比其他循环结构更加适用。

do-while循环的基本结构

do-while循环的语法结构如下:

do {
// 循环体:需要重复执行的代码
} while (条件表达式);

执行流程解析

  1. 首先执行do后面的循环体代码
  2. 执行完毕后,判断while后的条件表达式
  3. 如果条件为true,回到第一步继续执行循环体
  4. 如果条件为false,退出循环,执行后续代码

这种"先执行,后判断"的特性决定了do-while循环至少会执行一次循环体,无论初始条件是否满足。

基础示例:1到100的求和

我们用do-while循环实现1到100的累加求和,观察它的执行特点:

public class DoWhileSumExample {
public static void main(String[] args) {
int sum = 0; // 存储累加结果
int n = 1; // 循环变量 do {
sum += n; // 将n的值累加到sum中
n++; // 循环变量自增
} while (n <= 100); // 循环条件 System.out.println("1到100的和为:" + sum); // 输出5050
}
}

在这个例子中,循环体首先执行一次(计算1的累加),然后判断n <= 100是否成立,直到n超过100时循环结束。

与while循环的关键区别

do-while循环和while循环在功能上相似,但执行顺序的不同导致了它们适用场景的差异:

循环类型 执行顺序 最少执行次数 适用场景
while 先判断,后执行 0次 循环可能不需要执行的场景
do-while 先执行,后判断 1次 至少需要执行一次的场景

对比示例

public class LoopComparison {
public static void main(String[] args) {
int count = 5; // while循环:条件不满足时一次都不执行
System.out.println("while循环:");
while (count < 5) {
System.out.println("执行while循环");
count++;
} // do-while循环:无论条件如何,至少执行一次
System.out.println("do-while循环:");
count = 5; // 重置count
do {
System.out.println("执行do-while循环");
count++;
} while (count < 5);
}
}

输出结果:

while循环:
do-while循环:
执行do-while循环

这个对比清晰地展示了两种循环的核心差异:当初始条件不满足时,while循环一次都不执行,而do-while循环仍然会执行一次。

实际应用场景

do-while循环特别适合那些"至少需要执行一次"的操作,例如:

场景1:用户输入验证

import java.util.Scanner;

public class InputVerification {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password; do {
System.out.print("请输入密码(至少6位):");
password = scanner.nextLine();
} while (password.length() < 6); // 密码不足6位则重新输入 System.out.println("密码设置成功!");
scanner.close();
}
}

在这个例子中,无论用户第一次输入什么,程序至少会要求输入一次密码,直到输入符合要求为止。

场景2:游戏回合制循环

import java.util.Scanner;

public class GameLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String playAgain; do {
// 游戏逻辑代码
System.out.println("正在进行游戏...");
System.out.println("游戏结束!"); // 询问是否再玩一次
System.out.print("是否再玩一次?(y/n):");
playAgain = scanner.nextLine();
} while (playAgain.equalsIgnoreCase("y")); // 输入y则继续 System.out.println("谢谢参与!");
scanner.close();
}
}

游戏场景中,至少需要运行一次游戏逻辑,然后根据用户选择决定是否继续,这正是do-while循环的典型应用。

注意事项

使用do-while循环时,需要注意以下几点:

  1. 循环条件的更新:确保循环体内有修改循环条件的语句,否则可能导致死循环

    // 死循环示例
    int i = 0;
    do {
    System.out.println(i);
    // 缺少i的更新语句,条件永远为true
    } while (i < 5);
  2. 分号的位置do-while循环在while条件后必须加;,这是容易遗漏的细节

    // 正确写法
    do {
    // 循环体
    } while (condition); // 注意此处的分号

总结

  • do-while先执行循环体,后判断循环条件
  • do-while至少会执行一次循环体
  • 语法上需要在while条件后添加分号

Java流程控制——5.do while循环的更多相关文章

  1. Java流程控制:增强for循环,break&continue,打印99乘法表

    增强for循环:java5引入了一种主要用于数组或集合的增强for循环for(声明语句:表达式){//代码句子} 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语 ...

  2. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  3. 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结

    053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...

  4. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  5. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  6. 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句

    050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...

  7. 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句

    049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...

  8. 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

    048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...

  9. 047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用

    047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用 本文知识点:嵌套while循环应用 什么是循环嵌套? 什么是循环嵌套? ...

  10. 046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项

    046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项 本文知识点:for循环的注意事项 for循环的注意事项 for循环有3个 ...

随机推荐

  1. 【ASP.NET Core】调用 Web API 备份数据库

    老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前.啊,大海啊,全是水:时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目.也许是现在大环境真 ...

  2. 题解:CF1977D XORificator

    题目链接:link. 题目大概其实就是想让我们通过翻转某些行,使得尽可能多的列成为特殊列. 众所周知,暴力肯定是不行的,所以我们需要考虑优化! 对于每一列 \(j\),枚举每一行 \(i\),通过翻转 ...

  3. uni-app项目loading显示方案

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE可视化的运行和打包也让开发体验也非常棒,公司项目就是主推uni-app, ...

  4. A0-Z9

    首位字母A-Z,第二位数字0-9,组流水号. 将字母转成ascii 码,拼接数字,组成一个三位数字. 将这个三位的数字+1,再把这个三位数前两位转回字母,重新拼接出字母+数字 REPORT zlyte ...

  5. How to execute selenuim + cucumber automation

  6. 【译】更优的模型,更智能的设置:Claude Sonnet 4、GPT-4.1 及 Visual Studio 中的更多控制

    我们很高兴宣布 Visual Studio 中 Copilot 体验的重大升级,包括更智能的默认模型.更多选择以及更简单的用量管理方式. 更智能的默认模型 Visual Studio 中的 Copil ...

  7. LaTeX编辑数学公式基本语法

    LaTeX编辑数学公式基本语法 引用自: [1]https://blog.csdn.net/qq_33532713/article/details/108602463 [2]https://www.c ...

  8. C/C++实现合成地震记录

    C/C++实现合成地震记录 本实例将从波阻抗模型中获得与之对应的反射系数,再将反射系数与子波褶积得到合成地震记录. 1 由波阻抗获取反射系数 地震波在介质中传播时,作用于某个面积上的压力与单位时间内垂 ...

  9. 前端开发系列114-工程化篇之Gulp构建工具的基本使用

    本文主要介绍前端开发中常用的构建工具Gulp,具体包括Gulp的基本情况.安装.使用以及常见插件的安装.配置和使用等内容. Gulp介绍 Gulp是使用JavaScript编写的,运行在Node.js ...

  10. 前端开发系列074-JQuery篇之框架源码解读[开始]

    我将花点时间写几篇关于jQuery框架源码解读的系列文章,参考版本为当前最新的jQuery 3.3.1版本,本文主要介绍jQuery框架最新版本的基本信息以及如何开始等相关的内容. 准备说明 我自己在 ...