我得到了将2个矩阵相乘的方法:

public static AbstractMatrix multiplication(AbstractMatrix m1, AbstractMatrix m2) {
    AbstractMatrix result = null;
    int sum=0;
    if (m1.getNbc() == m2.getNbl()) {
        for(int c=0;c<m1.getNbl();c++){
            for(int d=0;d<m2.getNbc();d++){
                for(int k=0;k<m1.getNbc();k++){
                    sum=somme+m1.getValeur(c, k)*m2.getValeur(k, d);
                }
                result.setValeur(c, d, sum);
                sum=0;
            }
        }

    }
    return result;
}


我得到:


  空指针访问变量结果只能为空


在此位置:result.set()。我知道问题出在AbstractMatrix result=null;中,但是AbstractMAtrix是一个抽象类,因此我无法实例化它(new AbstractMatrix)。

我怎样才能解决这个问题?

最佳答案

您已正确识别出问题->您正试图在null上调用一个方法,显然这是无法完成的。
另外,您正确地确定AbstractMatrixabstract类,因此无法实例化。


  需要采取什么补救措施?


您必须创建一个子类,假设Matrix extends AbstractMatrix覆盖了abstract中的任何AbstractMatrix方法。然后,您可以像这样实例化它:

AbstractMatrix result = new Matrix();


这将使您的代码正确运行,并且不会引发NPE。

10-04 11:00