You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法使用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();
    }
}

关键修改说明

  1. 添加Scanner sc = new Scanner(System.in);:创建Scanner实例,绑定到标准输入流,这样才能调用nextInt()读取用户输入。
  2. 增加输入提示:让用户清楚需要输入什么内容,提升交互性。
  3. 优化输出格式:去掉空行,改为带说明的输出,结果更清晰。
  4. 添加sc.close();:使用完Scanner后关闭资源,养成良好的编码习惯。

内容的提问来源于stack exchange,提问作者NITIN SHREEPAD KOLEKAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:50:18