
该文详解 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 语句显式引入,否则编译器无法识别其定义。
✅ 正确写法需在类定义前添加导入声明:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
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);
}
}
⚠️ 注意事项:
- import 语句必须位于 package 声明之后、class 定义之前;
- 不可将 import 写在类内部或 main 方法中;
- 若同时使用多个 java.util 类(如 ArrayList, HashMap),可统一用通配符导入:import java.util.*;,但推荐显式导入以提升可读性与可维护性;
- Scanner 在使用完毕后(尤其在处理文件流时)建议调用 input.close() 释放资源;对于 System.in,关闭会导致后续输入不可用,因此本例中可省略,但需知其权衡。
? 小结:Java 的“一切皆需声明”原则要求开发者主动管理依赖——这不是冗余步骤,而是保障类型安全与模块清晰的关键机制。添加一行 import java.util.Scanner;,即可让键盘输入功能正常工作。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










