You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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. 分隔线定义:直接写出固定格式的分隔线,每个格子对应+---,开头留两个空格匹配行号的占位。
  2. 行顺序处理:原数组中索引1到8对应棋盘的1到8行,通过reversed()反转遍历顺序,实现从8到1的打印。
  3. 行内容拼接:每行开头打印行号,之后依次拼接每个格子的内容,用|和空格分隔,确保所有格子对齐。
  4. 列标打印:提取原数组第一行的a-h列标,用joinToString(" ")拼接成指定格式,前面留四个空格对齐棋盘整体布局。

运行这段代码后,输出会完全匹配你要求的棋盘格式。

内容的提问来源于stack exchange,提问作者Adrian Bong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:35:32