我有这个方法来乘以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
)。
我该如何解决这个问题?
答案 0 :(得分:1)
您正确识别了您的问题 - &gt;你试图在null
上调用一个显然无法完成的方法
此外,您正确地确定AbstractMatrix
是abstract
类,因此无法实例化。
需要采取哪些措施来解决这个问题?
您必须创建一个子类,假设Matrix extends AbstractMatrix
会覆盖abstract
中的所有AbstractMatrix
方法。然后你可以这样实例化它:
AbstractMatrix result = new Matrix();
这将使您的代码正确运行并且不会抛出NPE。