gpt4 book ai didi

java - 将二维数组打印为文字 "array of arrays"(阅读说明)

转载 作者:行者123 更新时间:2023-11-30 10:20:19 26 4
gpt4 key购买 nike

这是一个非常小众的问题,所以请听我说完。

情况

我正在编码 Ultimate Tic Tac Toe命令行游戏。我有一个名为 currentState 的二维 char[9][9] 数组,其中每个子数组包含 'X' 'O',或 ' ',表示 3x3 大网格中的 3x3 小网格(索引 0 是左上角,1 是中上角,2 是右上角,3 是左中角等,对于小网格和大网格)。

问题

如果我尝试通过使用两个嵌套的 for 循环正常遍历数组来打印数组,那么要在每个小网格中显示的元素将跨行显示。我想打印 currentState,这样它将显示在“数组的数组”中,就像电路板实际看起来的样子,如上面的链接所示。

我尝试过的

我创建了另一个名为 renderedStateint[9][9],其想法是可以使用嵌套的 for 打印它如上所述;每个元素都对应于 currentState 中的正确元素(例如,currentState[3][7] == renderedState[5][1] -- board 中的元素位置 7 处的 3 应打印在 5 行,1 列(均从零开始))。

这个方法的难点在于找到一种方法来更新这个数组,给定来自正在更新的 currentState 的正方形的索引(如果 currentState 1 [0] 正在改变, renderedState[0][3] 也应该是改变了)。经过多次失败的尝试才得出以下结果,它通过遍历 currentState 来更新 renderedState:

for (int row = 0, board = 0; row < 9; row += 3)
for (int col = 0; col < 9; col += 3, board++)
for (int pos = 0; pos < 9; pos++)
renderedState[row + (pos / 3)][col + (pos % 3)] = currentState[board][pos];

这工作正常,但我计划开发某种引擎供用户对抗,因此循环遍历所有 81 个元素以更改单个值会花费太多时间,因为看起来它可以减少为单个值声明,例如

renderedState[someRow][someColumn] = currentState[grid][pos];

...但是如何找到 someRowsomeColumn 的值?

抱歉解释冗长。长期以来,我一直试图弄清楚这一点,以至于我自己都感到困惑。如有不明之处请提问。

最佳答案

您可以从值网格和位置中计算出 someRow 和 someColumn 的值:

someRow = Math.floor(grid / 3) * 3 + Math.floor(pos / 3); //each third grid-value the row increases by 3, each third pos-value it increases by 1
someColumn = (grid % 3) * 3 + pos % 3; //The column is thrice the rest of grid divided by 3 plus the position divided by three

如您所说,如果您使用的是从零开始的编号系统,则此代码有效。否则,您需要相应地使用 gridpos 的递减值。

关于java - 将二维数组打印为文字 "array of arrays"(阅读说明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48275181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com