我需要转置以下矩阵:
Matrix o = new Matrix(new int[][] { { 1, 4, 6 }, { 2, 4, -1 },
{ 0, 4, 0 }, { 5, 1, 0 } });
目前我正在使用此代码:
public void transpose() {
for(int i = 0; i < values[i].length; i++) {
for(int j = i+1; j < values[j].length; j++) {
int t = values[i][j];
values[i][j] = values[j][i];
values[j][i] = t;
}
}
结果矩阵是 https://i.imgur.com/ZivSIEr.png
虽然生成的Matrix应该是这样的: https://i.imgur.com/4ogJCjW.png
我感谢你能得到的任何帮助,提前谢谢!
答案 0 :(得分:0)
您需要一个新的2d数组实例:
int[][] T = new int[ values[1].length ][ values.length ];
for( int i = 0; i < T.length; i++ ) {
for( int j = 0; j < T[1].length; j++ ) {
T[ i ][ j ] = values[ j ][ i ];
System.out.print( T[ i ][ j ] + "\t" );
}
System.out.println();
}
输出:
1 2 0 5
4 4 4 1
6 -1 0 0
答案 1 :(得分:0)
这里有一些问题。正如Jon指出的那样,你的起始数组是3x4,而你想要的输出数组是4x3。您需要创建一个新的目标数组来存储您的值。应根据输入数组维度计算此维度。检查每个循环运行的次数,以及它应该运行多少次。你应该找到答案跳出来。