我正在做一个项目,我必须从一个二维数组中创建一个矩阵。其中一项要求是将 3x4 二维数组(存储有值)转换为 6x2 二维数组(具有相同的值)?
public int[][] covertMatrix(int[][] ma, int r, int c) {
rw = r;
col = c;
this.ma = new int[rw][col];
for (int i = 0; i < rw; i++) {
for (int j = 0; j < col; j++) {
ma[i][j] = ma[i][j];
}
}
return ma;
}
我试过这段代码,它 reshape 了数组,但只打印了一个由零组成的二维数组。
最佳答案
此版本将值重新分配给新数组。
通过将单元格索引除以给出行的列来计算索引,然后计算其余的给出新列。
public int[][] covertMatrix(int[][] ma, int r, int c) {
rw = r;
col = c;
int element = 0;
int[][] ma2 = new int[rw][col];
for (int i = 0; i < ma.length; i++) {
for (int j = 0; j < ma[i].length; j++) {
final int newRow = (element)/col; //integer division ignoring rest.
final int newCol = (element)%col; // rest of the division.
ma2[newRow][newCol] = ma[i][j];
element++;
}
}
this.ma = ma2;
return ma2;
}
System.err.println(Arrays.deepToString(covertMatrix(new int[][]{{1,2,3,4},{5,6,7,8},{9,10,11,12}},6,2)));
-> [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]]
关于java - 在 Java 中,如何获取二维数组的值并将它们存储在另一个具有不同列和行大小的二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54730750/