我刚开始和Kotlin一起玩,并且正在为Kotlin进行Udacity训练营课程。
我要解决以下问题陈述:
代码:
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而不是实际数字本身的引用?
答案 0 :(得分:3)
我认为这里的真正问题是您的电话:
Scaffold(
...
resizeToAvoidBottomPadding: false,
...
}
应该是:
strList.add(numbers.toString())
照原样,它每次都尝试打印整个数组。而且由于IntArray本身似乎并没有实现strList.add(number.toString())
,因此您在toString()
中获得了默认值,这是唯一的,但不是很有帮助。
答案 1 :(得分:0)
尝试使用contentToString而不是toString:
strList.add(numbers.contentToString())
这将导致:
[[11, 12, 13, 14, 15], [11, 12, 13, 14, 15], [11, 12, 13, 14, 15], [11, 12, 13, 14, 15], [11, 12, 13, 14, 15]]
答案 2 :(得分:0)
谢谢。
该错误是一个愚蠢的错字,其中我每次都在添加number
而不是@gidds纠正过的numbers
。根据Java逻辑,将一个列表添加到集合会导致一个mem地址,而不是user2864740指出的内容的内省。谢谢大家的帮助。
已解决。