gpt4 book ai didi

java - 2D 数组通过从 0 到数组大小的位置编号获取行和列

转载 作者:行者123 更新时间:2023-12-02 04:21:58 25 4
gpt4 key购买 nike

例如,我有一个像这样设置的二维数组:

+---+---+---+---+---+ 
| | | | | |
|0 |1 |2 |3 |4 |
+---+---+---+---+---+
| | | | | |
|5 |6 |7 |8 |9 |
+---+---+---+---+---+
| | | | | |
|10 |11 |12 |13 |14 |
+---+---+---+---+---+
| | |OOO| | |
|15 |16 |OOO|18 |19 |
+---+---+---+---+---+
| | | | | |
|20 |21 |22 |23 |24 |
+---+---+---+---+---+

其中的 o 是我放置在位置 17 的内容。但是,我实际上是尝试将 o 放置在位置 7 的。我正在接受用户输入这些数字之一来执行此操作。

为了获取行和列的值,我使用

int row = Math.floorDiv(size*size - 1, space);
int col = space % size;

其中 size 是行/列的长度(在本例中为 5,它始终是方阵),space 是“单元格”的数量我正在尝试将 o 放入其中。

我知道列函数工作正常,但我似乎不知道如何计算行。

<小时/>

编辑:感谢 Cinnam 和 Nayuki Minase;答案就是空间/大小。因此,我会问一个我也不确定能否克服的不同问题。当放置棋子时,我必须检查它的北、西、东、南的空间没有被其他玩家占据。为此,我使用代码

    if((board[row][col+1] == otherPlayerInt) 
|| (board[row][col-1] == otherPlayerInt)
|| (board[row+1][col] == otherPlayerInt)
|| (board[row][col-1]==otherPlayerInt)){
return false;
}

其中其他玩家由负整数表示。如果我这样做,并且该 block 被放置在边缘上,我将得到一个 ArrayOutOfBoundsException。有哪些方法可以克服这个问题?

最佳答案

简洁的答案:

int row = space / size;
int col = space % size;

以及逆运算:

int index = row * size + col;

关于java - 2D 数组通过从 0 到数组大小的位置编号获取行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32674087/

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