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

Java 流程控制:从「小白」到「能用」的 while 循环指南

 

🔥「炎码工坊」技术弹药已装填!
点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】

 

一、问题驱动:为什么需要 while循环?

假设你正在开发一个程序,需要让用户输入一个正整数,如果用户输入了负数或零,程序应该提示重新输入。这个问题看似简单,但如果没有循环语句,代码会变得冗长且难以维护: 

// JDK 17 示例代码  
import java.util.Scanner;  public class InputValidation {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int number;  // 第一次输入  System.out.print("请输入一个正整数: ");  number = scanner.nextInt();  // 如果输入无效,手动重复提示  if (number <= 0) {  System.out.print("输入无效,请重新输入: ");  number = scanner.nextInt();  }  // ... 如果用户再次输错,代码需要无限复制?  }  
}  

这段代码的问题显而易见:需要重复编写几乎相同的代码块,且无法预知用户会输错多少次。这时,while 循环就能派上用场! 


二、while 循环的语法与流程图

1. 基本语法

while (布尔表达式) {  // 循环体(当条件为 true 时重复执行的代码)  
}  

2. 流程图解析

      ┌──────────────────┐  │   条件为 true?   │  └─────────┬────────┘  │ 是  ▼  ┌──────────────────┐  │   执行循环体代码   │  └──────────────────┘  ▼  ┌──────────────────┐  │   返回条件判断   │  └──────────────────┘  

三、实战案例:用 while 解决实际问题

案例 1:用户输入验证(问题驱动的直接解决方案)

import java.util.Scanner;  public class InputValidation {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int number;  // 只要输入无效,就持续循环  while (true) {  System.out.print("请输入一个正整数: ");  number = scanner.nextInt();  if (number > 0) break;  System.out.println("输入必须大于 0!");  }  System.out.println("您输入的有效数字是: " + number);  }  
}  

案例 2:计算累加和(从 1 加到 100)

public class SumCalculator {  public static void main(String[] args) {  int sum = 0;  int i = 1;  while (i <= 100) {  sum += i;  i++;  }  System.out.println("1 到 100 的累加和为: " + sum);  }  
}  

四、对比其他循环结构:while vs for vs do-while

特性whilefordo-while
适用场景循环次数未知已知循环次数至少执行一次循环体
代码简洁性需手动管理初始化和迭代初始化、条件、迭代集中书写需注意条件判断在最后
潜在风险可能因忘记更新条件导致死循环灵活性稍低若条件始终不满足,可能引发逻辑错误
示例用户输入验证遍历数组菜单系统(至少显示一次)

五、避坑指南:while 循环的常见错误

错误 1:无限循环(死循环)

int i = 0;  
while (i < 5) {  System.out.println(i);  // 忘记 i++,i 永远为 0,循环无法退出  
}  

解决方法:确保循环体内有代码修改条件变量(如 i++)。 

错误 2:条件初始值错误

int number = -1;  
while (number > 0) {  // 这段代码永远不会执行!  
}  

解决方法:检查条件的初始值是否符合预期。 


六、进阶技巧:结合 break 和 continue

场景:跳过偶数并求奇数和

int sum = 0;  
int i = 0;  while (i <= 10) {  i++;  if (i % 2 == 0) continue; // 跳过偶数  sum += i;  
}  System.out.println("奇数和为: " + sum);  

七、总结:何时选择 while 循环?

  1. 循环次数不确定时(如等待用户输入、动态数据处理)。 
  2. 需要灵活控制循环条件时(如结合 break 和 continue 实现复杂逻辑)。 
  3. 与 do-while 对比:如果希望至少执行一次循环体,优先选择 do-while

记住一句话while 是「先判断后执行」,而 do-while 是「先执行后判断」。 


最后留个小问题: 

如果让你用 while 实现一个简单的「ATM 取款验证」(密码错误时允许重试 3 次),你会怎么写? 

欢迎在评论区分享你的思路!

 

🚧 您已阅读完全文99%!缺少1%的关键操作:
加入「炎码燃料仓」
🚀 获得:
√ 开源工具红黑榜 √ 项目落地避坑指南
√ 每周BUG修复进度+1%彩蛋
(温馨提示:本工坊不打灰工,只烧脑洞🔥)

 

相关文章:

  • DAY34
  • 市场需求文档撰写
  • 超大数值减法
  • 解决论文中字体未嵌入的问题
  • STM32中的SPI通信协议
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • CMake从入门到实战:现代C++项目构建指南
  • Android组件化框架设计与实践
  • Python60日基础学习打卡D35
  • NumPy数组切片
  • 基于AI自动生成测试用例
  • 「OC」源码学习——关联属性再探索
  • leetcode 131. Palindrome Partitioning
  • 【Qt】QCustomPlot相关
  • 2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
  • 【面板数据】上市公司外资持股数据集(2005-2023年)
  • 防火墙高可用(HA)主备验证实验(eNSP)
  • TTL和死信交换机实现延迟队列
  • 4款顶级磁力下载工具,速度提升器,可以变下变播
  • 第三章 第二大脑的运作机理 整理笔记
  • 国务院办公厅关于加强政府网站信息内容建设的意见 首次/长春网站优化页面
  • 网站多语言建设方案/哪里做网络推广好
  • 陈塘庄做网站公司/域名服务器查询
  • 国际b2b免费网站/关键词推广排名软件
  • 网站如何做触屏滑动/sem推广软件选哪家
  • 微信 网站建设/有什么可以做推广的软件