如何在Kotlin中按指定棋盘格式打印多维数组
Kotlin实现国际象棋棋盘格式化打印
给定你定义的chessBoard多维数组,下面是实现指定格式打印的代码:
val chessBoard = mutableListOf( mutableListOf<String>(" ", "a", "b", "c", "d", "e", "f", "g", "h"), mutableListOf<String>("1", " ", " ", " ", " ", " ", " ", " ", " "), mutableListOf<String>("2", "W", "W", "W", "W", "W", "W", "W", "W"), mutableListOf<String>("3", " ", " ", " ", " ", " ", " ", " ", " "), mutableListOf<String>("4", " ", " ", " ", " ", " ", " ", " ", " "), mutableListOf<String>("5", " ", " ", " ", " ", " ", " ", " ", " "), mutableListOf<String>("6", " ", " ", " ", " ", " ", " ", " ", " "), mutableListOf<String>("7", "B", "B", "B", "B", "B", "B", "B", "B"), mutableListOf<String>("8", " ", " ", " ", " ", " ", " ", " ", " "), ) // 生成棋盘的分隔线 val separator = " +---+---+---+---+---+---+---+---+" // 从第8行到第1行遍历打印(原数组行顺序是1-8,反转后得到8-1) for (row in chessBoard.subList(1, chessBoard.size).reversed()) { println(separator) // 拼接行号与每个格子的内容,用 | 分隔保证格式对齐 println("${row[0]} | ${row[1]} | ${row[2]} | ${row[3]} | ${row[4]} | ${row[5]} | ${row[6]} | ${row[7]} | ${row[8]} |") } // 打印最后一条分隔线 println(separator) // 打印列标,前面留空格对齐棋盘位置 println(" ${chessBoard[0].subList(1, chessBoard[0].size).joinToString(" ")}")
代码说明:
- 分隔线定义:直接写出固定格式的分隔线,每个格子对应
+---,开头留两个空格匹配行号的占位。 - 行顺序处理:原数组中索引1到8对应棋盘的1到8行,通过
reversed()反转遍历顺序,实现从8到1的打印。 - 行内容拼接:每行开头打印行号,之后依次拼接每个格子的内容,用
|和空格分隔,确保所有格子对齐。 - 列标打印:提取原数组第一行的a-h列标,用
joinToString(" ")拼接成指定格式,前面留四个空格对齐棋盘整体布局。
运行这段代码后,输出会完全匹配你要求的棋盘格式。
内容的提问来源于stack exchange,提问作者Adrian Bong
相关产品推荐
相关产品推荐

