在Kotlin中打印多维数组吗?

时间:2018-07-03 09:06:31

标签: arrays kotlin

给出下面的数组最简单的打印方法是什么?循环是一种选择,但是还有其他更简单的选择吗?

val array = arrayOf(arrayOf(1, 2),
arrayOf(3, 4),
arrayOf(5, 6, 7))

4 个答案:

答案 0 :(得分:1)

具有内置功能:

val array = arrayOf(arrayOf(1, 2),
                arrayOf(3, 4),
                arrayOf(5, 6, 7))

println(array.joinToString(prefix = "[", postfix = "]") {
    it.joinToString(prefix = "[", postfix = "]")
})

答案 1 :(得分:0)

1。使用标准库

val array = arrayOf(arrayOf(1, 2),
            arrayOf(3, 4),
            arrayOf(5, 6, 7))

print(Arrays.deepToString(array))

2。使用for循环

fun <T> print2DArray(twoDArray: Array<Array<T>>) {
    for (i in 0 until twoDArray.size) {
        for (j in 0 until twoDArray[i].size) {
            print(twoDArray[i][j])
            if (j != twoDArray[i].size - 1) print(" ")
        }
        if (i != twoDArray.size - 1) println()
    }
}
val array = arrayOf(arrayOf(1, 2),
            arrayOf(3, 4),
            arrayOf(5, 6, 7))

print2DArray(array)

答案 2 :(得分:0)

只需执行以下操作

MyServerLister

答案 3 :(得分:-1)

这取决于您想要显示它的方式。

选项1

fun Array.contentDeepToString: String
  

返回此数组内容的字符串表示形式,就好像它是一个List一样。嵌套数组也被视为列表。   如果任何数组在任何嵌套级别上都包含自身,则该引用将呈现为“ [...]”以防止递归。

请注意,这是在后台使用Arrays.deepToString(array)的内联函数。

然后使用array.contentDeepToString()在输出中得到以下字符串:

  

[[1、2],[3、4],[5、6、7]]

选项2

我主要使用Array.joinToString,它允许使用给定的分隔符并向每个元素应用转换来加入数组。来自文档:

  

从所有使用[separator]分隔并使用给定的[prefix]和[postfix](如果提供)分隔的元素中创建一个字符串。如果集合可能很大,则可以指定[limit]的非负值,在这种情况下,仅第一个[limit]   元素将被附加,然后是[截断的]字符串(默认为“ ...”)

在您的情况下,由于数组的每个项目都是子数组,因此您还必须使用对其进行转换

array.joinToString("\n") { subarray ->
    subarray.joinToString()
}

这将为您提供输出:

  

1、2
  3,4
  5、6、7

您可以使用分隔符,前缀,后缀和转换参数来获得所需的格式。


最后的笔记

  • 循环是格式化数组的唯一方法,contentDeepToStringjoinToString在实现时都使用循环,请考虑到这一点。
  • joinToString也可用于IterableSequence