while循环适用于次数不确定但结束条件明确的场景,需初始化、更新和判断条件变量;先判条件再执行,条件为false时一次不执行,须防死循环。

Java 中 while 循环适合处理“次数不确定、但结束条件明确”的场景,关键在于循环前初始化条件变量、循环中更新变量、循环体里判断是否继续。
while 循环的基本结构和执行逻辑
while 语句先检查布尔表达式,为 true 才执行循环体;每次执行完循环体后再次判断,直到条件为 false 时退出。它不预设迭代次数,完全依赖运行时状态变化。
- 语法: while (布尔表达式) { 循环体 }
- 必须确保循环体内有能影响布尔表达式的操作,否则可能陷入死循环
- 若初始条件为 false,循环体一次都不会执行(与 do-while 不同)
典型应用场景:读取用户输入直到满足条件
比如要求用户输入一个正整数,输入错误就重复提示:
Scanner scanner = new Scanner(System.in);
int number = -1;
while (number
<p>这里 number 是控制变量,每次输入后更新,循环持续到输入合法为止。</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review"><img
src="https://img.php.cn/upload/skill/000/000/081/179084711841712.jpg" alt="Java Maven Code Review" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review" class="overflowclass">Java Maven Code Review</a>
<p class="overflowclass">审查Java Maven项目(ZIP压缩包或GitLab仓库URL),检查代码规范、命名、模块边界、可维护性问题以及重复代码。</p>
</div>
<a rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<h3>处理文件或流数据:逐行读取直到末尾</h3>
<p>从文件或标准输入读取内容时,往往不知道总行数,用 while 配合 hasNextLine() 或 readLine() 很自然:</p>
<pre class="brush:java;toolbar:false;">BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line.trim());
}
reader.close();
注意:readLine() 返回 null 表示流结束,这个返回值直接作为 while 条件,简洁又安全。
避免常见陷阱:更新条件 & 处理边界
容易出错的地方集中在条件变量没更新、更新位置不对、或判断逻辑反了:
- 漏写更新语句 → 死循环(如忘记 i++)
- 把更新放在条件判断之后、但循环体中有 return/break → 更新可能被跳过
- 用 == 比较字符串或对象引用代替 equals() → 条件永远不成立
- 浮点数直接用 == 判断相等 → 因精度问题导致意外循环
建议把条件变量的修改紧邻在循环体末尾,或在关键分支后显式处理。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










