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
相同。