Java 2D数组按从0到数组大小的位置号获取行和列

Java 2D数组按从0到数组大小的位置号获取行和列,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,例如,我有一个二维数组,如下所示: +---+---+---+---+---+ | | | | | | |0 |1 |2 |3 |4 | +---+---+---+---+---+ | | | | | | |5 |6 |7 |8 |9 | +---+---+---+---+---+ | | | | | | |10 |11 |12 |13 |14 | +---+---+---+---+---+ |

例如,我有一个二维数组,如下所示:

+---+---+---+---+---+ 
|   |   |   |   |   | 
|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 | 
+---+---+---+---+---+ 
我在第17点放的是o。然而,我实际上是想把o放在第7点。我正在使用其中一个数字的用户输入来执行此操作

要获取行和列的值,我使用

int row = Math.floorDiv(size*size - 1, space);
int col = space % size; 
其中,
size
是行/列的长度(在本例中为5,它始终是一个正方形数组),而
space
是我试图将o放入的“单元格”的编号

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


编辑:感谢肉桂和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;
    }
其中,另一个玩家由一个负整数表示。如果我这样做了,并且把它放在边缘上,我会得到一个BoundsException的数组。有哪些方法可以克服这个问题?

一个简洁的答案:

int row = space / size;
int col = space % size;
逆运算:

int index = row * size + col;
简明扼要的回答:

int row = space / size;
int col = space % size;
逆运算:

int index = row * size + col;

你能不能只做
row=space/size
?——————————————————————————————————————————————————————————————————————————————————————————————————。我会在一小时内发布一个新问题,如果你想把答案发送到那里,我会把它链接到这里。最后一个
board[row][col-1]
应该是
board[row-1][col]
。为了避免边界错误,您只需检查自己是否处于边界。或者,如果
board[row][col]
永远不等于
otherPlayerInt
,您可以将
[row+1]
替换为
[Math.min(row+1,size-1)]
并将
[row-1]
替换为
[Math.max(row-1,0)]
。与
col
相同。你能不能只做
row=space/size
?————————————————————————————————————————————————————————————————————那是不可能发生的事,不用担心:)是的,我意识到了,我正要发布一个新问题,但我。我会在一小时内发布一个新问题,如果你想把答案发送到那里,我会把它链接到这里。最后一个
board[row][col-1]
应该是
board[row-1][col]
。为了避免边界错误,您只需检查自己是否处于边界。或者,如果
board[row][col]
永远不等于
otherPlayerInt
,您可以将
[row+1]
替换为
[Math.min(row+1,size-1)]
并将
[row-1]
替换为
[Math.max(row-1,0)]
。与
col
相同。