无法使用Java Scanner类:导入util包后仍报错该如何解决?
问题分析与修复方案
你的代码核心问题是未初始化Scanner实例,虽然导入了java.util.*包,但必须显式创建Scanner对象才能读取用户输入,另外还有一处可优化的地方:
错误点说明
- 直接使用
sc.nextInt()但未定义sc变量:sc是Scanner类的实例,需要先声明并初始化才能调用其方法。 - 多余的空行输出:
System.out.println();会打印一个空行,若不需要可删除。
修正后的完整代码
import java.util.*; class Box{ int width; int height; int breadth; // 计算体积的方法 int volume(){ return width * height * breadth; } } public class Main{ public static void main(String[] args){ // 初始化Scanner实例,用于读取控制台输入 Scanner sc = new Scanner(System.in); Box b1 = new Box(); Box b2 = new Box(); // 读取b1的参数 System.out.print("请输入b1的宽度:"); b1.width = sc.nextInt(); System.out.print("请输入b1的高度:"); b1.height = sc.nextInt(); System.out.print("请输入b1的深度:"); b1.breadth = sc.nextInt(); // 读取b2的参数 System.out.print("请输入b2的宽度:"); b2.width = sc.nextInt(); System.out.print("请输入b2的高度:"); b2.height = sc.nextInt(); System.out.print("请输入b2的深度:"); b2.breadth = sc.nextInt(); // 计算并输出体积 System.out.println("\nb1的体积:" + b1.volume()); System.out.println("b2的体积:" + b2.volume()); // 关闭Scanner资源 sc.close(); } }
关键修改说明
- 添加
Scanner sc = new Scanner(System.in);:创建Scanner实例,绑定到标准输入流,这样才能调用nextInt()读取用户输入。 - 增加输入提示:让用户清楚需要输入什么内容,提升交互性。
- 优化输出格式:去掉空行,改为带说明的输出,结果更清晰。
- 添加
sc.close();:使用完Scanner后关闭资源,养成良好的编码习惯。
内容的提问来源于stack exchange,提问作者NITIN SHREEPAD KOLEKAR
相关产品推荐
相关产品推荐

