在Java中转换Matrix时的尺寸错误

时间:2017-11-01 20:11:26

标签: java matrix

我需要转置以下矩阵:

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

我感谢你能得到的任何帮助,提前谢谢!

2 个答案:

答案 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。您需要创建一个新的目标数组来存储您的值。应根据输入数组维度计算此维度。检查每个循环运行的次数,以及它应该运行多少次。你应该找到答案跳出来。