无法乘以两个矩阵(double [] []数组)

时间:2014-01-31 00:56:47

标签: java arrays matrix

我试图做的是使用一个方法,它是构造对象的一部分(它显示为Matrix.getArray())。它本质上是double[][]。但是我需要将我构造的Matrix中的2个相乘,但由于某些限制,它必须以这种方式完成。所以我想知道如何获得所选Matrix的范围。

以下是一些代码,可以更好地说明我的意思:

Matrix matA = new Matrix(arrayA);
Matrix matB = new Matrix(arrayB);

matA.mulBy(matB);

这是我的main()课程的一部分,该课程将启动该计划,并调用matA的{​​{1}}方法,该方法会将其乘以mulBy。但是我不能让它工作,因为我无法在范围中选择matB的索引来乘以,如下所示:

matA

所以我想问题是,如何将这些相乘以使其工作?或者我如何让public Matrix mulBy(Matrix A) { double[][] arrayC = new double[getRows()][A.getColumns()]; double[][] mulArray = A.getArray(); System.out.println(leng); System.out.println(widt); for(int f = 0; f < A.getColumns(); f++) { //must add F loop here for(int i = 0; i < A.getColumns(); i++) { arrayC[i][f] = m[i][0] * mulArray[0][i]; } } Matrix matC = new Matrix(arrayC); return matC; } 的内容与他们合作?如何访问Matrix的变量才能使其正常工作?

我无法正确地说出这一点并在线查找资源,因为我不知道描述此内容所需的术语。

1 个答案:

答案 0 :(得分:0)

要从内部引用Object,您必须使用关键字this,例如:

Class Matrix {

    private double[][] myArray;

    public Matrix() {...} // Constructor

    public Matrix mulBy(Matrix A) {

        double[][] arrayC = new double[getRows()][A.getColumns()];
        double[][] mulArray = A.getArray();
        System.out.println(leng);
        System.out.println(widt);
        for(int f = 0; f < A.getColumns(); f++)
        {
        //must add F loop here
            for(int i = 0; i < A.getColumns(); i++)
            {
                // to access myArray of the object that you are calling it's method use this
                arrayC[i][f] = this.myArray[i][0] * mulArray[0][i];
            }
        }

        Matrix matC = new Matrix(arrayC);

        return matC;
    }
}

在这种情况下,即使您删除了this关键字,它也会起作用,因为您的方法范围内没有任何其他变量具有相同的名称。

但是如果我们在这种情况下用myArray替换arrayC(例如),我们必须使用this.arrayC来区分局部变量和实例变量。