Почему toString в IntArray добавляет адрес в список в Kotlin? - PullRequest
0 голосов
/ 03 марта 2019

Я только начал играть с Kotlin и проходил курс начальной загрузки Udacity для Kotlin.

Я хочу решить следующую задачу:

  1. Создать целочисленный массивчисла, называемые числами, от 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 напечатать ссылку на номер, а не фактический номер?

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Я думаю, что реальная проблема здесь в том, что ваша строка:

strList.add(numbers.toString())

должна быть, вероятно,:

strList.add(number.toString())

То есть она пытается печатать весь массив каждый раз.А поскольку IntArray, по-видимому, сам не реализует toString(), вы получаете значение по умолчанию в Object, которое уникально, но не очень полезно.

0 голосов
/ 03 марта 2019

Благодаря Gidds.

Ошибка была глупой опечаткой, где вместо number, исправленной @gidds, я каждый раз добавлял numbers.Добавление списка в коллекцию приводит к адресу mem в соответствии с логикой Java, а не к самоанализу содержимого, как было указано user2864740.Спасибо людям за помощь.

Это решено.

0 голосов
/ 03 марта 2019

Попробуйте 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...