我得到了将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
上调用一个方法,显然这是无法完成的。
另外,您正确地确定AbstractMatrix
是abstract
类,因此无法实例化。
需要采取什么补救措施?
您必须创建一个子类,假设Matrix extends AbstractMatrix
覆盖了abstract
中的任何AbstractMatrix
方法。然后,您可以像这样实例化它:
AbstractMatrix result = new Matrix();
这将使您的代码正确运行,并且不会引发NPE。