控制台输入 Scanner 报错?重复输入、关闭报错、空指针问题解决
·
前言
Scanner 是 Java 初学最常用的控制台输入工具,但新手极易遇到:
- 连续输入跳过、读取空值
- 关闭后再次使用报错
- 空指针异常
本篇一次性解决 Scanner 所有新手 bug。
一、Scanner 基础用法
java
运行
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
二、新手 Top1 bug:nextInt 后 nextLine 空值跳过
报错现象
输入数字后,直接跳过字符串输入
原因
nextInt() 只读取数字,不读取回车换行符 换行符残留在缓冲区,被下一次 nextLine() 直接读取为空
完美解决方案
读取数字后,清空缓冲区
java
运行
sc.nextLine(); // 吸收残留换行符
三、重复关闭 Scanner 导致的报错
报错场景
多个方法多次 new Scanner、多次 close
原因
System.in 全局唯一流,关闭后无法再次使用
规范写法
- 全局只创建一个 Scanner 对象
- 程序最后只关闭一次
四、输入不匹配异常
输入字母却用 nextInt → 输入类型不匹配异常 解决:输入前提示规范输入,或后续学习异常捕获
五、新手最佳模板(可直接复用)
java
运行
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入数字:");
int a = sc.nextInt();
sc.nextLine(); // 吸收换行
System.out.print("请输入字符串:");
String str = sc.nextLine();
System.out.println(a + " " + str);
sc.close();
}
}
结语
Scanner 90% 的报错都是缓冲区换行符问题,掌握吸收换行符技巧,彻底解决输入错乱问题。
更多推荐




所有评论(0)