Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2017, 23:28   #1
Andrey9181spb
 
Регистрация: 12.08.2017
Сообщений: 7
По умолчанию Вычисление определителя и передача массива в метод Java

Здравствуйте!
Задался целью написать алгоритм для вычисления определителя матрицы размером 3*3.
Попробовал такой код:

public class Opredelitel {
public static void main(String[] args) {

Minor Min = new Minor();
Double [] Crew = new Double[13];
Double[][] MatrixNet = new Double[3][3];
MatrixNet[0][0] = 0.1;
MatrixNet[0][1] = 0.5;
MatrixNet[0][2] = 1.5;

MatrixNet[1][0] = 1.1;
MatrixNet[1][1] = 1.5;
MatrixNet[1][2] = 1.0;

MatrixNet[2][0] = 2.1;
MatrixNet[2][1] = 2.5;
MatrixNet[2][2] = 0.5;


for (int k = 0; k < 3; k++) {
for (int i = 0; i < MatrixNet.length; i++) {
for (int j = 0; j < MatrixNet.length; j++)
if ((i != k) & (j != 0)) {
int t = 0;
Crew[t] = MatrixNet[i][j];

double m = Min.Chek(MatrixNet[0][0],MatrixNet[1][0],MatrixNet[2][0],Crew);
System.out.print(m);

}
}
}
}
}


public class Minor {
public double m;
public double Chek(double MatrixNet1, double MatrixNet2, double MatrixNet3, Double[] Crew) {
for (int i=0; i<=13;i++)
m = double MatrixNet1*(Crew [0]*Crew [3]-Crew [1]*Crew [2])-double MatrixNet2*(Crew [4]*Crew [7]+Crew [5]*Crew [6])-double MatrixNet3*(Crew [8]*Crew [11]-Crew [9]*Crew [10]);
return m;
}
}

В вызывающем методе 3-мя циклами отбираются элементы трех алгебраических дополнений для элементов в 3-х строках. То есть всего 12 элементов. С этой задачей алгоритм справляется превосходно. А на следующем этапе я хотел эти 12 элементов MatrixNet[i][j] записать в новый - уже одномерный - массив Crew[t]. И передать этот новый массив в качестве аргумента в метод Minor, в котором уже вычисляется определитель, как сумма произведений соответствующих элементов на их алгебраические дополнения. Соответствующие элементы передаю также в качестве аргументов

В результате выдает: NullPointedException
Попробовал упростить задачу. Передавал только массив (без отдельных элементов) и в методе Minor вычислял, к примеру, Crew [0] + Crew [2].
Выдает то же самое...
Andrey9181spb вне форума Ответить с цитированием
Старый 13.08.2017, 18:24   #2
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

1. Обратите внимание на код
Код:
int t = 0;
Crew[t] = MatrixNet[i][j];
В результате у Вас в Crew всегда будет заполнен только 1 элемент Crew[0]. Поэтому обращение к Crew[3] выкинет nullPointerException
2. Что тут за bouble'ы?
Код:
m = double MatrixNet1*(Crew [0]*Crew [3]-Crew [1]*Crew [2])-double MatrixNet2*(Crew [4]*Crew [7]+Crew [5]*Crew [6])-double MatrixNet3*(Crew [8]*Crew [11]-Crew [9]*Crew [10]);
3. Почитайте "Чистый код" Роберта Мартина прежде, чем будете кодить на java (да и не только ) в родакшн.

Последний раз редактировалось alexey_kip; 13.08.2017 в 18:30.
alexey_kip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива параметров в метод Artsiom PHP 8 10.10.2016 20:30
Передача массива в метод Sempe4 Общие вопросы .NET 6 16.06.2010 17:25
Передача двумерного динамического массива в метод Дырдин Общие вопросы C/C++ 1 19.03.2010 09:45
Вычисление определителя Sparky Помощь студентам 15 07.03.2010 19:42
Си шарп..) Метод рекурсии. Вычисление определителя матрицы произвольного размера. Sneginka* Помощь студентам 1 03.03.2010 20:14