我有一个主要班级,要求转置我现有的矩阵。我有主意,但我不能返回Matrix对象。给出错误Type Mismatch - cannot convert from int[][] to matrix

    public class Matrix {
    int numRows;
    int numColumns;
    int data[][];

    public Matrix transpose() {
    int[][] M = new int [numColumns][numRows];
    for (int i = 0; i < numRows; i++) {
        for (int j = 0; j < numColumns; j++) {
            M[j][i] = data[i][j];
        }
    }
    return M;
}

最佳答案

您有两个选择。

选项1(更改退货类型):

选项1是将返回类型从Matrix更改为int[][]

public int[][] transpose() {
    int[][] M = new int[numColumns][numRows];
    for (int i = 0; i < numRows; i++) {
        for (int j = 0; j < numColumns; j++) {
            M[j][i] = data[i][j];
        }
    }
    return M;
}


选项2(创建一个对象并返回它):

选项2是创建一个对象,并将转置矩阵添加到该对象并返回它。

public Matrix transpose() {
    int[][] M = new int[numColumns][numRows];
    for (int i = 0; i < numRows; i++) {
        for (int j = 0; j < numColumns; j++) {
            M[j][i] = data[i][j];
        }
    }
    return new Matrix(numColumns, numRows, M);
}


假设您的构造函数如下所示

public Matrix(int numRows, int numColumns, int[][] data) {
    this.numRows = numRows;
    this.numColumns = numColumns;
    this.data = data;
}

关于java - 如何返回不同类中的转置矩阵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57795487/

10-10 11:42
查看更多