Java流程控制——5.do while循环
Java中的do-while循环:先执行后判断的循环机制
在Java的循环结构中,do-while循环是一种特殊的循环形式,它与while循环的主要区别在于执行顺序——do-while循环会先执行一次循环体,然后再判断循环条件。这种特性使得它在某些特定场景下比其他循环结构更加适用。
do-while循环的基本结构
do-while循环的语法结构如下:
do {
// 循环体:需要重复执行的代码
} while (条件表达式);
执行流程解析
- 首先执行
do后面的循环体代码 - 执行完毕后,判断
while后的条件表达式 - 如果条件为
true,回到第一步继续执行循环体 - 如果条件为
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循环时,需要注意以下几点:
循环条件的更新:确保循环体内有修改循环条件的语句,否则可能导致死循环
// 死循环示例
int i = 0;
do {
System.out.println(i);
// 缺少i的更新语句,条件永远为true
} while (i < 5);
分号的位置:
do-while循环在while条件后必须加;,这是容易遗漏的细节// 正确写法
do {
// 循环体
} while (condition); // 注意此处的分号
总结
do-while先执行循环体,后判断循环条件do-while至少会执行一次循环体- 语法上需要在
while条件后添加分号
Java流程控制——5.do while循环的更多相关文章
- Java流程控制:增强for循环,break&continue,打印99乘法表
增强for循环:java5引入了一种主要用于数组或集合的增强for循环for(声明语句:表达式){//代码句子} 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语 ...
- Java基础-程序流程控制第二弹(循环结构)
Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...
- 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结
053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...
- 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序
052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...
- 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1
051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...
- 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句
050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...
- 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句
049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...
- 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...
- 047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用
047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用 本文知识点:嵌套while循环应用 什么是循环嵌套? 什么是循环嵌套? ...
- 046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项
046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项 本文知识点:for循环的注意事项 for循环的注意事项 for循环有3个 ...
随机推荐
- 【ASP.NET Core】调用 Web API 备份数据库
老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前.啊,大海啊,全是水:时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目.也许是现在大环境真 ...
- 题解:CF1977D XORificator
题目链接:link. 题目大概其实就是想让我们通过翻转某些行,使得尽可能多的列成为特殊列. 众所周知,暴力肯定是不行的,所以我们需要考虑优化! 对于每一列 \(j\),枚举每一行 \(i\),通过翻转 ...
- uni-app项目loading显示方案
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE可视化的运行和打包也让开发体验也非常棒,公司项目就是主推uni-app, ...
- A0-Z9
首位字母A-Z,第二位数字0-9,组流水号. 将字母转成ascii 码,拼接数字,组成一个三位数字. 将这个三位的数字+1,再把这个三位数前两位转回字母,重新拼接出字母+数字 REPORT zlyte ...
- How to execute selenuim + cucumber automation
- 【译】更优的模型,更智能的设置:Claude Sonnet 4、GPT-4.1 及 Visual Studio 中的更多控制
我们很高兴宣布 Visual Studio 中 Copilot 体验的重大升级,包括更智能的默认模型.更多选择以及更简单的用量管理方式. 更智能的默认模型 Visual Studio 中的 Copil ...
- LaTeX编辑数学公式基本语法
LaTeX编辑数学公式基本语法 引用自: [1]https://blog.csdn.net/qq_33532713/article/details/108602463 [2]https://www.c ...
- C/C++实现合成地震记录
C/C++实现合成地震记录 本实例将从波阻抗模型中获得与之对应的反射系数,再将反射系数与子波褶积得到合成地震记录. 1 由波阻抗获取反射系数 地震波在介质中传播时,作用于某个面积上的压力与单位时间内垂 ...
- 前端开发系列114-工程化篇之Gulp构建工具的基本使用
本文主要介绍前端开发中常用的构建工具Gulp,具体包括Gulp的基本情况.安装.使用以及常见插件的安装.配置和使用等内容. Gulp介绍 Gulp是使用JavaScript编写的,运行在Node.js ...
- 前端开发系列074-JQuery篇之框架源码解读[开始]
我将花点时间写几篇关于jQuery框架源码解读的系列文章,参考版本为当前最新的jQuery 3.3.1版本,本文主要介绍jQuery框架最新版本的基本信息以及如何开始等相关的内容. 准备说明 我自己在 ...