Форум программистов
Реклама:
Гарантия безопасности сети с UTM-системой ИКС.
Защита ПД, межсетевой экран, контроль доступа, фильтрация трафика, система предотвращения вторжений.
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 13.08.2017, 00:28   #1
Andrey9181spb
Новичок
 
Регистрация: 13.08.2017
Сообщений: 1
Репутация: 10
По умолчанию Вычисление определителя и передача массива в метод 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, 19:24   #2
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 196
Репутация: 14
По умолчанию

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 в 19:30.
alexey_kip вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




17:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru