Я получил этот метод, чтобы умножить 2 матрицы:Null доступ указатель
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
).
Как это исправить?
Вы пытались создать экземпляр любого класса, который «расширяет» абстрактный класс 'result'? – Idos
экземпляр работает без проблем, у меня есть MapMatrix, 2DMatrix и да, вся эта работа, но здесь, в аргументе этого метода, igot поместить AbstractMatrix – Pika
, одна вещь, которую вы могли бы сделать, это изменить интерфейс на 'public static void multiplication (AbstractMatrix m1, AbstractMatrix m2, AbstractMatrix r) 'и do' r = new SomeMatrixType() 'из того, где вы называете« умножение », так как там вы знаете класс, результат должен принадлежать – cobarzan