Java代码中Scanner读取仅停留在第一行,请求排查代码错误
Scanner卡在输入环节的问题排查与解决
可能的原因
- 代码结构不完整:你提供的代码片段中,
while(true)循环、try代码块以及main方法都缺少闭合的大括号,这会导致编译错误,程序无法正常执行。 - 等待有效整数输入:
sc.nextInt()方法会一直阻塞程序,直到用户输入有效的整数并按下回车。如果输入的是字母、符号等非整数内容,会触发InputMismatchException,若未处理该异常,程序会直接终止,看起来像是“卡住”。 - 输入缓冲区残留问题:若程序中有前置输入操作残留了换行符,可能影响Scanner的读取,但你的代码中是刚初始化Scanner,这种概率较低。
修复方案
- 补全代码结构:确保所有代码块都有对应的闭合大括号,这是程序正常运行的基础。
- 添加输入异常处理:捕获
InputMismatchException,避免程序崩溃,同时清除输入缓冲区的无效内容,防止死循环。 - 确保输入符合要求:运行程序后输入整数并回车,程序即可继续执行。
修复后的完整代码示例:
import java.util.Scanner; import java.util.InputMismatchException; public class MyClass { public static void main(String args[]) { try (Scanner sc = new Scanner(System.in)) { while (true) { System.out.println(""); System.out.println("Enter the numbers to perform operations"); System.out.println("Enter the first number"); try { int x = sc.nextInt(); // 可在此添加后续运算逻辑 System.out.println("你输入的第一个数是: " + x); } catch (InputMismatchException e) { System.out.println("请输入有效的整数!"); sc.next(); // 清除输入缓冲区的无效内容 } } } } }
内容的提问来源于stack exchange,提问作者Mark Ashibuogwu
相关产品推荐
相关产品推荐

