首页 > 解决方案 > 为什么 IntArray 上的 toString 会将地址添加到 Kotlin 中的列表中?

问题描述

我刚刚开始使用 Kotlin,并且正在学习 Udacity 的 Kotlin 训练营课程。

我想解决以下问题陈述:

  1. 创建一个名为 numbers 的整数数组,从 11 到 15。
  2. 为字符串创建一个空的可变列表。
  3. 编写一个循环遍历数组并将每个数字的字符串表示形式添加到列表中的 for 循环。
  4. 另外请参阅正确添加的编号(打印出列表的内容)。

代码:

var numbers : IntArray = intArrayOf(11, 12, 13, 14, 15)
var strList : MutableList<String> = mutableListOf<String>()

println("Now adding nos to strList")
for (number in numbers) {
    strList.add(numbers.toString())
}

println(strList)

奇怪的是我看到如下结果:

Now adding nos to strList
[[I@3bc04539, [I@3bc04539, [I@3bc04539, [I@3bc04539, [I@3bc04539]

我知道这听起来很简单,但是为什么 Kotlin 会打印对 no 的引用而不是实际数字本身呢?

标签: kotlin

解决方案


我认为这里真正的问题是您的线路:

strList.add(numbers.toString())

应该是:

strList.add(number.toString())

照原样,它每次都尝试打印整个数组。而且由于 IntArray 似乎没有toString()自行实现,因此您会得到默认的 in Object,它是唯一的,但不是很有帮助。


推荐阅读