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

为何Scala中使用println打印Array会出现奇怪输出?

Scala打印Array内容异常解决方案

你看到的[I@xxxx格式输出是JVM中数组对象的默认toString返回值:[I标识对象为int类型一维数组,后面的十六进制字符串为对象的内存哈希地址。

可用解决方案

  • 方案1:优先使用Scala原生mkString方法,无额外导包,支持自定义格式
    一维数组用法:
    val arr = Array(1, 2, 3)
    // 基础格式,自定义分隔符
    println(arr.mkString(", ")) // 输出:1, 2, 3
    // 带前后包裹符
    println(arr.mkString("Array(", ", ", ")")) // 输出:Array(1, 2, 3)
    
    嵌套数组处理:
    val nestedArr = Array(Array(1, 2), Array(3, 4))
    println(nestedArr.map(_.mkString(", ")).mkString("Array(", ", ", ")")) // 输出:Array(1, 2, 3, 4)
    
  • 方案2:兼容Java的Arrays工具类方法,如果你熟悉Java的处理逻辑可以用
    注意一维数组用Arrays.toString,多维数组必须用Arrays.deepToString,否则会报错或输出异常
    import java.util.Arrays
    
    val arr = Array(1, 2, 3)
    println(Arrays.toString(arr)) // 输出:[1, 2, 3]
    
    val nestedArr = Array(Array(1, 2), Array(3, 4))
    println(Arrays.deepToString(nestedArr)) // 输出:[[1, 2], [3, 4]]
    
  • 方案3:针对你给出的List包含数组的场景,直接批量处理即可
    你的输出示例为List([I@5ec77191, [I@4642b71d, [I@1450078a),对应处理代码:
    val list = List(Array(1, 2), Array(3, 4), Array(5, 6))
    // 格式化整个列表输出
    println(list.map(_.mkString("Array(", ", ", ")")).mkString("List(", ", ", ")"))
    // 输出:List(Array(1, 2), Array(3, 4), Array(5, 6))
    

内容的提问来源于stack exchange,提问作者Shiva ParsaRad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:24:03