在我的java应用程序中,我有一个方法,它返回三个2D数组。所有相同大小的行和列。例如,假设这些是我的方法返回的三个2D数组
A = [2,4,5,18 9,4,1,7 14,67,90,2]
B = [34,23,1,9 12,5,9,0 14,67,8,1]
C = [2,68,1,1 3,7,0,11 23,45,5,5]
现在我想要实现的是创建另一个方法并再次返回三个2D数组但是现在第一个2D数组应该具有上面每个2D数组的第一行,第二行应该具有上面每个2D数组的第二行所以对于第三个新的2D阵列。
我整天都想着怎么做,但我仍然没有弄明白如何实现它。我真的很感激,如果有人建议我如何做或更好地发布一些代码行,所以我会知道如何继续进行
答案 0 :(得分:0)
你必须编写一个方法,在其中为每个数组提供三个原始数组和行长度(我建议为每个新行数组编写一个不同的方法,保持代码更清晰)然后只迭代每个数组提供的数组。
public int [] [] newRowOneArray(int rowLength,int [] [] a,int [] [] b,int [] [] c){
int returnArray[] [] = new int[3][rowLength]; //new 2d array
for(int i=0; i<rowLength; i++){
returnArray[0][i] = a[0][i]; //place a row one in new row 1
}
for(int i=0; i<rowLength; i++){
returnArray[1][i] = b[0][i]; //place b row one in new row 2
}
for(int i=0; i<rowLength; i++){
returnArray[2][i] = c[0][i]; //place c row one in new row 3
}
return returnArray;
}
然后你可以为其他两个新数组编写类似的方法。只需更改与新行对应的每个新方法的行值(例如,第2行的[1] [i])
答案 1 :(得分:0)
我写了一个简单的课来帮助你。它接收一个矩阵列表[i] [m] [n]其中i(numMatrices)= m(行)= n(cols)并返回一个相同大小的三维数组,所有行k放入行中的矩阵k index =矩阵指数。
public class MatrixManipulator {
public int[][][] combine(int[][][] matrices) {
// We are making a lot of assumptions here by not checking
// that dimension are equal (cubic for this problem)
final int numMatrices = matrices.length, numRows = matrices[0].length, numColumns = matrices[0][0].length;
int[][][] newMatrices = new int[numMatrices][numRows][numColumns];
for (int i = 0; i < numMatrices; ++i) {
for (int m = 0; m < numRows; ++m) {
for (int n = 0; n < numColumns; ++n) {
newMatrices[i][m][n] = matrices[n][m][i];
}
}
}
return newMatrices;
}
public void printMatrices(int[][][] matrices) {
final int numMatrices = matrices.length, numRows = matrices[0].length, numColumns = matrices[0][0].length;
for (int i = 0; i < numMatrices; ++i) {
System.out.println("Matrix " + (i + 1));
for (int m = 0; m < numRows; ++m) {
for (int n = 0; n < numColumns; ++n) {
System.out.print(matrices[i][n][m]);
}
System.out.println("");
}
System.out.println("");
}
}
}
在调用combine()
之前Matrix 1
111
222
333
Matrix 2
111
222
333
Matrix 3
111
222
333
调用combine()
之后Matrix 1
111
111
111
Matrix 2
222
222
222
Matrix 3
333
333
333
请记住,我的矩阵实现存储为列列表。对于某些人来说,存储行列表可能更直观。要使行列表起作用,您只需更改以下一行:
newMatrices[i][m][n] = matrices[n][m][i];
到
newMatrices[i][m][n] = matrices[m][i][n];
我希望这有帮助!
- 汤姆