如何不用joinToString实现3x3x3全0三维Int列表的正确打印?
解决方法
首先你的代码存在基础问题:你创建的是9个3元素的一维列表,而非要求的3x3x3三维列表。正确的3x3x3三维列表结构是「3个二维列表,每个二维列表包含3个一维列表,每个一维列表有3个0」。
方法1:嵌套循环直接打印
不用joinToString,通过三层嵌套循环逐个输出元素,同时控制换行和分隔符:
fun main() { // 正确创建3x3x3三维列表 val threeDList = List(3) { List(3) { List(3) { 0 } } } // 嵌套循环打印 threeDList.forEach { twoD -> twoD.forEach { oneD -> oneD.forEachIndexed { index, num -> print(num) if (index != oneD.lastIndex) print(", ") } println() } println() // 分隔不同的二维层 } }
方法2:手动拼接字符串后打印
用StringBuilder把所有内容拼接成目标格式的字符串,最后一次性打印:
fun main() { val threeDList = List(3) { List(3) { List(3) { 0 } } } val sb = StringBuilder() threeDList.forEachIndexed { twoDIndex, twoD -> twoD.forEach { oneD -> sb.append(oneD.joinToString(", ")) sb.append("\n") } // 最后一个二维层后不额外换行 if (twoDIndex != threeDList.lastIndex) { sb.append("\n") } } print(sb.toString()) }
输出效果
两种方法都会输出符合预期的格式:
0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0 0, 0, 0
内容的提问来源于stack exchange,提问作者Artem Riabchikov
相关产品推荐
相关产品推荐

