如果你想要行主序,给列rowIndex,列columnIndex,并且伪造(缺少一个更好的术语)具有numberOfColumns列的二维数组,公式是
rowIndex * numberOfColumns + columnIndex.
如果你想要行主序,列columnIndex并且伪造(缺少一个更好的术语)具有numberOfRow行的二维数组,公式是
columnIndex * numberOfRows + rowIndex.
所以,假设行主序:
int[10] oneDim = {1,10};
int rows = 2;
int columns = 5;
for (int row = 0; row < rows; row++) {
for (int column = 0; column < columns; column++) {
System.out.println(row + "," + column + ": " + oneDim[row * columns + column]);
}
}
0,0: 1
0,1: 2
0,2: 3
0,3: 4
0,4: 5
1,0: 6
1,1: 7
1,2: 8
1,3: 9
1,4: 10
并且如果您坚持使用单个for循环进行索引,假定以row-major顺序,您想要的公式如下所示:
int column = index % numberOfColumns;
int row = (index - column) / numberOfColumns;
如果您使用的是列主要顺序,则您需要的公式如下所示:
int row = index % numberOfRows;
int column = (index - row) / numberOfRows;
所以,
int[10] oneDim = {1,10};
int rows = 2;
int columns = 5;
for(int index = 0; index < 10; index++) {
int column = index % columns;
int row = (index - column) / columns;
System.out.println(row + "," + column + ": " + oneDim[index]);
}
0,4: 10
如预期.