Я только начал играть с Kotlin и проходил курс начальной загрузки Udacity для Kotlin.
Я хочу решить следующую задачу:
Код:
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 напечатать ссылку на номер, а не фактический номер?
Я думаю, что реальная проблема здесь в том, что ваша строка:
strList.add(numbers.toString())
должна быть, вероятно,:
strList.add(number.toString())
То есть она пытается печатать весь массив каждый раз.А поскольку IntArray, по-видимому, сам не реализует toString(), вы получаете значение по умолчанию в Object, которое уникально, но не очень полезно.
toString()
Object
Благодаря Gidds.
Ошибка была глупой опечаткой, где вместо number, исправленной @gidds, я каждый раз добавлял numbers.Добавление списка в коллекцию приводит к адресу mem в соответствии с логикой Java, а не к самоанализу содержимого, как было указано user2864740.Спасибо людям за помощь.
number
numbers
Это решено.
Попробуйте 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]]