空指针访问

时间:2016-02-21 09:45:00

标签: java matrix nullpointerexception instantiation abstract

我有这个方法来乘以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;
}

我得到了:

  

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

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正确识别了您的问题 - &gt;你试图在null上调用一个显然无法完成的方法 此外,您正确地确定AbstractMatrixabstract类,因此无法实例化。

  

需要采取哪些措施来解决这个问题?

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

AbstractMatrix result = new Matrix();

这将使您的代码正确运行并且不会抛出NPE。