将一维数组迭代为二维数组

我有,

int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, index = 0; 

如图所示,我们从原点创建二维的。 但是我如何迭代我的oneDim内部for (index = 0; index < 10; index++)以便我可以获得我的列索引行索引 而不创建新的索引行索引 ? 我希望它在将索引打印到二维数组(2×5)时看起来像这样:

 0,0 0,1 1,0 1,1 2,0 2,1 3,0 3,1 4,0 4,1 

我认为这里的主要问题是获取列索引行索引而不创建二维索引 。 不是吗?

如果你想要行主要顺序,给定行rowIndex ,列columnIndex并且伪造(缺少更好的术语)具有numberOfColumns列的二维数组,公式为

 rowIndex * numberOfColumns + columnIndex. 

如果你想要行主要顺序,给定行rowIndex ,列columnIndex并且伪造(缺少更好的术语)具有numberOfRow行的二维数组,公式是

 columnIndex * numberOfRows + rowIndex. 

因此,假设行主要顺序:

 int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 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循环进行索引,假设行主要顺序,你想要的公式如下:

 int column = index % numberOfColumns; int row = (index - column) / numberOfColumns; 

如果您使用的是列主要订单,则需要的公式如下:

 int row = index % numberOfRows; int column = (index - row) / numberOfRows; 

所以,

 int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 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, 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 

正如所料。

您显示的两个数字可以按照您显示的顺序计算,分别为index/2index%2 。 这就是“问题”的意思吗?

我认为这是你想要做的……将一个暗淡的数组转换成一个双暗的数组。

 //this is just pseudo code...not real syntax int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int first_dim = 5; int second_dim = 2; int[first_dim][second_dim] new_array; for (int fdi = 0; fdi < first_dim; fdi++){ for (int sdi = 0; sdi < second_dim; sdi++) { //this is the crux...you're calculating the one dimensional index to access the value new_array[fdi][sdi] = oneDim[fdi*second_dim + sdi] } }