Java中如何用Scanner输入0时通过break终止循环?
修正Java Scanner循环输入终止问题
原代码存在几个核心逻辑错误,导致无法实现需求:
- 初始读取
x后,while循环中重复调用input.nextLong(),导致输入和判断逻辑脱节,每次循环会额外消耗一次输入 while的条件写反,当前逻辑是"输入为0时才进入循环",和需求的"输入非0时继续循环"完全相反- 循环内没有重新提示用户输入,也未更新
x的值,无法实现重复输入的流程
以下是修正后的代码,完全符合需求:
import java.util.Scanner; public class ex1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 无限循环,直到输入0时终止 while (true) { System.out.print("Enter any number or enter 0 to stop: "); long x = input.nextLong(); if (x == 0) { break; // 输入0时执行break终止循环 } // 若需要对非0输入做处理,可在此添加逻辑 } input.close(); // 关闭Scanner释放资源 } }
修正说明:
- 用
while(true)构建无限循环,保证程序会持续提示用户输入 - 将输入读取、提示语句都放在循环内部,每次循环都会获取新的输入值
- 当检测到输入为0时,立即通过
break终止循环,完全匹配需求 - 添加
input.close()规范关闭IO资源,避免资源泄漏
内容的提问来源于stack exchange,提问作者miro
相关产品推荐
相关产品推荐

