
该文详解 Java 程序因未导入 java.util.Scanner 而报编译错误的原因及修复方法,并提供完整可运行代码与关键注意事项。
该文详解 java 程序因未导入 `java.util.scanner` 而报编译错误的原因及修复方法,并提供完整可运行代码与关键注意事项。
在 Java 中,使用 Scanner 从键盘读取用户输入是基础操作,但初学者常因忽略显式导入语句而遭遇编译失败。你提供的代码逻辑完全正确(实现了整数反转算法),但编译器会直接报错,典型错误信息如:
error: cannot find symbol
Scanner input = new Scanner(System.in);
^
symbol: class Scanner
location: class Reverse根本原因在于:Scanner 并非 Java 的内置类型(如 int 或 String),而是位于 java.util 标准包中的工具类。Java 要求所有非 java.lang 包下的类必须通过 import 语句显式引入,否则编译器无法识别其定义。
✅ 正确写法需在类定义前添加导入声明:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
import java.util.Scanner; // ← 关键修复:必须添加此行
public class Reverse {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int ans = 0;
while (num > 0) {
int rem = num % 10;
num = num / 10;
ans = ans * 10 + rem;
}
System.out.println(ans);
}
}⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- import 语句必须位于 package 声明之后、class 定义之前;
- 不可将 import 写在类内部或 main 方法中;
- 若同时使用多个 java.util 类(如 ArrayList, HashMap),可统一用通配符导入:import java.util.*;,但推荐显式导入以提升可读性与可维护性;
- Scanner 在使用完毕后(尤其在处理文件流时)建议调用 input.close() 释放资源;对于 System.in,关闭会导致后续输入不可用,因此本例中可省略,但需知其权衡。
? 小结:Java 的“一切皆需声明”原则要求开发者主动管理依赖——这不是冗余步骤,而是保障类型安全与模块清晰的关键机制。添加一行 import java.util.Scanner;,即可让键盘输入功能正常工作。

















