Каким Kotlin способом печатается содержимое IntArray? - PullRequest
3 голосов
/ 26 мая 2020

Какой Kotlin способ печати содержимого IntArray?

class Solution {
    fun plusOne(digits: IntArray): IntArray {

        println(digits.toString()) // does not work
        println(Arrays.toString(digits)) // does work but its java way of doing
        for(i in 0 until digits.size) {
           ...
        }

        return digits
    }
}

Есть ли какой-нибудь метод kotlin, который работает аналогично Arrays.toString ()? Я просто хочу увидеть содержимое для отладки.

Ответы [ 5 ]

5 голосов
/ 26 мая 2020

Вы можете использовать функцию contentToString , доступную для всех типов Array

val digits = intArrayOf(1,2,3,4)

val javaToString = Arrays.toString(digits).also(::println)    // [1, 2, 3, 4]
val kotlinToString = digits.contentToString().also(::println) // [1, 2, 3, 4]
println(javaToString == kotlinToString)                       // true

Вот рабочий пример https://pl.kotl.in/dUu_aioq0

5 голосов
/ 26 мая 2020

Есть несколько способов, в зависимости от ваших требований, вы можете использовать любой. Обратите внимание, что вам не нужно преобразовывать его в список только для печати, если он вам не нужен для других случаев использования.

println(arr.contentToString())

//this one prints number on each line
arr.forEach(::println)  // same as arr.forEach{println(it)}

Вы также можете использовать Arrays.toString, но contentToString() удобно, и это внутренние звонки Arrays.toString

3 голосов
/ 26 мая 2020

Проведя немного больше исследований, я хотел добавить joinToString() к приведенным выше удивительным ответам:

val numbers = intArrayOf(1, 2, 3, 4, 5, 6)
println(numbers.joinToString()) 

Это будет напечатано ниже вывода:

1, 2, 3, 4, 5, 6

Это также позволяет вам добавьте префикс, суффикс по вашему выбору, как показано ниже:

println(numbers.joinToString(prefix = "{", postfix = "}"))

Это выведет:

{1, 2, 3, 4, 5, 6}
1 голос
/ 26 мая 2020

Попробуйте преобразовать в список

fun main() {
    val digits: IntArray = IntArray(10)
    println(digits.toList())  // or digits.asList()
}

Вывод:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
0 голосов
/ 26 мая 2020

Есть много способов достичь sh этого. Один из способов - сначала создать строку вывода, используя fold , а затем распечатать ее внутри функции также :

val digits = intArrayOf(1,2,3,4,5,6,7)

digits.fold("[") { output, item -> "$output $item" }.also { println("$it ]") }

Это приведет к выводу:

[ 1 2 3 4 5 6 7 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...