当前位置: 首页 > news >正文

Java 循环结构之 do-while 语句新手核心学习笔记

Java 基础极简通关前言:do-while 是 Java 循环家族中 “保底执行” 的特殊成员,核心特点是先执行、后判断,哪怕条件不满足也会执行一次循环体。这篇笔记提炼 do-while 的核心语法、执行逻辑、实战场景和避坑要点,新手 10 分钟掌握它和 while 的核心区别!

一、do-while 循环核心定位

核心特性:先执行循环体,再判断条件(循环体至少执行 1 次);适用场景:必须先执行一次的业务场景(如用户输入验证、密码重试、菜单展示);对比 while:while 是 “先判断、后执行”(可能执行 0 次),do-while 是 “先执行、后判断”(至少 1 次),两者互补覆盖所有循环需求。

二、do-while 循环基础语法(必记)

1. 标准结构

// 1. 初始化循环变量 初始化语句; do { // 2. 循环体:先执行一次,再判断条件 循环体语句; // 3. 更新循环变量(关键!避免死循环) 迭代语句; } while (条件表达式); // 注意:末尾必须加分号!

2. 核心执行流程(三步必背)

  1. 初始化:执行一次循环变量初始化(如int i = 1;);
  2. 执行循环体:不管条件是否满足,先执行一次循环体代码;
  3. 判断 + 迭代:计算条件表达式(返回 boolean 值),true 则回到循环体继续执行,false 则跳出循环;每次执行完循环体都会先更新变量,再判断条件。

3. 快速实战案例

案例 1:基础版 —— 打印 1-5 的数字
public class DoWhileDemo1 { public static void main(String[] args) { // 1. 初始化变量 int i = 1; do { // 2. 先执行循环体 System.out.println("当前数字:" + i); // 3. 迭代更新 i++; } while (i <= 5); // 后判断条件 } } // 运行结果: // 当前数字:1 // 当前数字:2 // 当前数字:3 // 当前数字:4 // 当前数字:5
案例 2:实用版 —— 密码验证(必须先提示输入)

这是 do-while 最典型的应用场景,无论密码是否正确,都要先提示用户输入一次:

import java.util.Scanner; public class DoWhileDemo2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String password; // 无需初始化密码,先执行输入 do { System.out.print("请输入登录密码:"); password = sc.next(); // 密码错误时提示 if (!password.equals("123456")) { System.out.println("密码错误,请重新输入!"); } } while (!password.equals("123456")); // 密码不对就重复 System.out.println("密码正确,登录成功!"); } } // 运行效果: // 请输入登录密码:123 // 密码错误,请重新输入! // 请输入登录密码:123456 // 密码正确,登录成功!

三、do-while vs while 核心对比(必背)

新手最容易混淆两者,一张表讲清区别:

表格

特性do-while 循环while 循环
执行顺序先执行循环体,后判断条件先判断条件,后执行循环体
执行次数至少执行 1 次条件不满足时执行 0 次
语法细节末尾必须加;无末尾分号
适用场景必须执行一次(输入验证、菜单)不确定是否执行(累加、遍历)

对比案例:条件不满足时的执行差异

// do-while:条件false,仍执行1次循环体 int a = 6; do { System.out.println("do-while执行了"); // 输出:do-while执行了 a++; } while (a <= 5); // while:条件false,循环体0次执行 int b = 6; while (b <= 5) { System.out.println("while执行了"); // 无输出 b++; }

四、新手必避 3 个高频坑

坑 1:忘记加末尾分号,编译报错

// 错误:while()后缺少分号 do { System.out.println("测试"); } while (i <= 5) // 编译报错!

解决:do-while 的while(条件)必须加英文分号;,这是语法硬性要求。

坑 2:忘记迭代语句,导致死循环

和 while 一样,do-while 缺少迭代语句会让条件永远为 true,循环无限执行:

int i = 1; do { System.out.println(i); // 缺少i++,i永远=1,条件永远true,死循环! } while (i <= 5);

解决:循环体中必须包含i++/i--等更新循环变量的代码,确保条件最终能变为 false。

坑 3:混淆执行顺序,错误选择循环类型

比如 “计算 1-100 的和”,用 do-while 虽然能实现,但逻辑上更适合用 while/for(无需保底执行);而 “用户输入验证” 用 while 则会导致首次不提示输入,逻辑错误。解决:记住核心原则 ——需要保底执行一次用 do-while,否则用 while

五、核心总结

  1. do-while 循环:先执行、后判断,循环体至少执行 1 次,末尾必须加;
  2. 核心适用场景:密码验证、菜单展示、输入提示等 “必须先执行一次” 的业务;
  3. 避坑重点:迭代语句不能漏、末尾分号不能少、根据执行需求选择循环类型。

do-while 是 while 的补充,掌握它和 while 的执行顺序差异,就能灵活应对所有循环场景。动手敲一遍密码验证的案例,就能彻底理解它的核心价值!

http://www.jsqmd.com/news/359409/

相关文章:

  • VastBase 高可用集群完整操作报告
  • 37-学习笔记尚硅谷数仓搭建-ADS层分析并以各品牌商品下单统计为例
  • 学习记录260208
  • Helm Chart 是什么?
  • P8340 [AHOI2022] 山河重整 题解
  • wc 听课总结
  • 强化学习中的单个回合的回报估计动作值和所有回合的回报估计动作值的理解及exploring starts条件
  • 《凌微经 · 理悖相涵》第七章 形性一体——本然如是之元观
  • AX3000T刷机教程
  • 听《卡农》有感 - Mars
  • 深入解析:FPGA纯verilog实现JESD204B协议,基于AD9250数据接收,提供3套工程源码和技术支持
  • 局域网内如何互相ping通?
  • python使用pip安装jupter报错,并且用conda安装jupter后,启动jupter也报一样的错误:checking the latest version of pip...如何解决?
  • 【SQL笔记1】SQL真正的执行顺序
  • 第二章,MySQL数据类型
  • SQL笔记(一)
  • 技术的便利,从来都不属于开发者
  • 西门子数控系统 SINUMERIK 840D sl数据高速录波的一种方法
  • C# 变量作用域
  • 【状态机DP】LeetCode 123. 买卖股票的最佳时机|||
  • 大数据可视化项目实战:从数据采集到展示
  • 《堆的 shift down》
  • 除夕夜的坚守(原创诗)
  • 一种适用于联通ZXHN G7606V6光猫的,在自带的openwrt子系统操作主系统ip6tables防火墙的方法
  • Vue.js 事件处理器
  • 集体好奇心与团队成员的心理健康
  • TypeScript String
  • Android开发工程师深度解析:技术能力与职业发展
  • 构建智能化的个人退休规划优化助手
  • AJAX 实例详解