Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297

Вылетает исключение

12.08.2010, 19:29. Показов 2858. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс Матрица. При работе вылетает исключение:
Exception in thread "main" java.lang.NullPointerException
at Matrix.multiplication(Matrix.java:123)
at Main.main(Main.java:73)

Вообще, когда использую матрицу комплексных чисел, то исключение не вылетает, а когда с своим классом DoubleNumber, то вылетает. Можете объяснить почему?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import java.io.*;
 
public class Matrix {
    
    private final int rows_;       
    private final int columns_;           
    private final UserNumber data_[][];   
 
    
    public Matrix()
    {
        rows_ = 1;
        columns_ = 1;
        data_ = new UserNumber[rows_][columns_];
        //data_[0][0] = 0;
    }
    
              public Matrix(UserNumber[][] data) {
              rows_ = data.length;
              columns_ = data[0].length;
              this.data_ = new UserNumber[rows_][columns_];
              for (int i = 0; i < rows_; i++)
                 for (int j = 0; j < columns_; j++)
                       this.data_[i][j] = data[i][j];
    }
 
    public Matrix(Matrix another)
    {
        this.columns_ = another.columns_;
        this.rows_ = another.rows_;
        this.data_ = new ComplexNumber[rows_][columns_];
        for (int i = 0; i < rows_; i++)
            for (int j = 0; j < columns_; j++)
                    this.data_[i][j] = another.data_[i][j];
    }
    
     
     // print matrix
     public void print() throws IOException {
         
            PrintWriter pw = new PrintWriter(System.out,true);
            
            pw.println("----------------------------------------------------------------------------");
            
            for (int i = 0; i < rows_; i++)
            {
                for (int j = 0; j < columns_; j++)
                {
                    pw.print(data_[i][j]);
                    pw.print('\t');
                }
                pw.println();
            }
            
            pw.println("----------------------------------------------------------------------------");
        }
       
        public Matrix subtraction(Matrix another) throws WrongSize {
            Matrix temp = this;
            if (another.rows_ != temp.rows_ || another.columns_ != temp.columns_) 
                throw new WrongSize("Subtraction of the matrices is impossible - size of the matrices must be identical");
            Matrix result = new Matrix(rows_, columns_);
            for (int i = 0; i < rows_; i++)
                for (int j = 0; j < columns_; j++)
                    result.data_[i][j] = temp.data_[i][j].subtraction(another.data_[i][j]);
            return result;
        }
        
        public Matrix multiplication(Matrix src) throws WrongSize {
            Matrix temp = this;
            if (this.columns_ != src.rows_) throw new WrongSize("Multiplying of the matrices is impossible - the sizes of the matrices are wrong");
            Matrix result = new Matrix(this.rows_, src.columns_);
            for (int i = 0; i < result.rows_; i++)
                for (int j = 0; j < result.columns_; j++)
                    for (int k = 0; k < temp.columns_; k++)
                    {
                                   // вот здесь вылетает исключение
                        UserNumber resultOfMultiplication = (temp.data_[i][k].multiplication(src.data_[k][j]));
                        result.data_[i][j] = result.data_[i][j].addition(resultOfMultiplication);
                    }
            return result;
        }
}
Это,конечно,части классов, слишком много все выкладывать


i
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
mport java.util.Random;
 
public strictfp class DoubleNumber implements UserNumber {
 
    private final double value_;
    
    public DoubleNumber() {
        Random r = new Random();
        
        value_ = r.nextDouble();
        
    }
    
    public DoubleNumber(double val) {
        
        value_ = val;
        
    }
    
    public DoubleNumber(DoubleNumber num) {
        value_ = num.value_;
    }
    
    public String toString() {
        return new String(Double.toString(value_));
    }
    
    
    public UserNumber addition(UserNumber num) {
        
        DoubleNumber temp = (DoubleNumber)num;
        
        return new DoubleNumber(value_ + temp.value_);
 
    }
 
    public boolean isEqual(UserNumber num) {
        
        DoubleNumber temp = (DoubleNumber)num;
        
 
        if(temp.value_ == this.value_)
        {
            return true;
        }
        else
        {
            return false;
        }
 
    }
 
    public UserNumber multiplication(UserNumber num) {
        
        DoubleNumber temp = (DoubleNumber)num;
        
        return new DoubleNumber(value_ * temp.value_);
 
    }
 
 
    public UserNumber subtraction(UserNumber num) {
        
        DoubleNumber temp = (DoubleNumber)num;
        
        return new DoubleNumber(value_ - temp.value_);
 
        
    }
 
}
Ну,на всякий случай, часть класса ComplexNumber

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.io.PrintWriter;
import java.util.Random;
 
 
public strictfp class ComplexNumber implements UserNumber {
 
      private final double real_;   // the real part
      private final double imaginary_;   // the imaginary part
      
      
    public ComplexNumber(double real, double imag) {
         this.real_ = real;
         this.imaginary_ = imag;
    }
       
    public ComplexNumber(ComplexNumber num) {
         this.real_ = num.real_;
         this.imaginary_ = num.imaginary_;
    }
    
    public ComplexNumber() {
        Random r = new Random();
        
        real_ = r.nextDouble();
        imaginary_ = r.nextDouble();
    }
    
    // return the algebraic form of the complex number
    public String toString() {
        if (imaginary_ == 0) return imaginary_ + "i";
        if (imaginary_ <  0) return real_ + " - " + (-imaginary_) + "i";
        return real_ + " + " + imaginary_ + "i";
    }
    
    // |z| = sqrt( a^2 + b^2 )
    public double abs() { return Math.hypot(real_, imaginary_); }  //Returns sqrt(x2 +y2) without intermediate overflow or underflow. 
    
    public UserNumber addition(UserNumber num) throws ClassCastException {
        double real = 0;
        double imag = 0;
        
        
        ComplexNumber temp = this;
        
        ComplexNumber cur = (ComplexNumber) num;
        
                  real = temp.real_ + cur.real_;
                  imag = temp.imaginary_ + cur.imaginary_;
        
        return new ComplexNumber(real, imag);
    }
 
    public UserNumber multiplication(UserNumber num) {
 
        ComplexNumber temp = this;
        ComplexNumber cur = (ComplexNumber)num;
        
        double real = temp.real_ * cur.real_ - temp.imaginary_ * cur.imaginary_;
        double imag = temp.real_ * cur.imaginary_ + temp.imaginary_ * cur.real_;
        return new ComplexNumber(real, imag);
    }
 
    public UserNumber subtraction(UserNumber num) {
 
        ComplexNumber temp = this;  
        
        ComplexNumber cur = (ComplexNumber)num; 
        //ComplexNumber neg = (ComplexNumber)cur.negate();
        
        double real = temp.real_- cur.real_;
        double imag = temp.imaginary_ - cur.imaginary_;
        return new ComplexNumber(real, imag);
    }
    
    public double getReal() { return real_; }
    public double getImaginary() { return imaginary_; }
 
}
Оба класса есть реализация интерфейса:


Java
1
2
3
4
5
6
7
8
9
10
public interface UserNumber {
    
    UserNumber subtraction(UserNumber num);
    UserNumber division(UserNumber num);
    UserNumber addition(UserNumber num);
    UserNumber multiplication(UserNumber num);
    boolean isEqual(UserNumber num);
    UserNumber negate();
    UserNumber exponentiation(double degree);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2010, 19:29
Ответы с готовыми решениями:

прохожу исключение не могу понять где ошибка. мне нужно сделать свое исключение
import java.io.*; public class student { public static void main(String args){ WithoutNIOExample io; io =...

Часто вылетает исключение JVM
Я осуществляю доступ из Java через JDBC-ODBC (ODBC драйвер стандартный Microsoft) к БД Paradox, но при работе часто вылетает исключение JVM...

При запуске программы вылетает исключение, при отладке кода его нет
Всем привет! Есть такой код. public class Solution { public static void main(String... args) throws IOException { try...

22
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2010, 21:57
Студворк — интернет-сервис помощи студентам
Ёрик, вопрос, какая необходимость была объявлять поля как final?
0
13.08.2010, 21:59

Не по теме:

M128K145,
Мы ведь об одном и том же говорим?? и туже проблему нашли и то же решение???или я чего-то не понимаю? )))

0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2010, 22:20
ну я говорю об этом
Цитата Сообщение от M128K145 Посмотреть сообщение
вы просто объявляете набор переменных, под которые надо выделять память
Он память под матрицу выделил, а сами объекты в матрице не посоздавал.

Мне просто стала интересна логика такого маневра
Java
1
private final UserNumber data_[][];
Ведь он по сути не сможет с ней ничего сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2010, 22:20

Вылетает исключение
Всем привет! private void zedGraphControl1_MouseClick(object sender, MouseEventArgs e) { MasterPane masterPane...

Почему вылетает исключение ???
Всем привет. Полез тут поэкспериментировать с Binding и постоянно вылетает исключение. Я уже весь измучался не могу отловить почему. Может...

Почему вылетает исключение
Есть метод чтения данных из файла, есть свой класс исключение который выводит сообщение о неправильном формате файла. Делаю следующее: ...

Почему вылетает исключение
foreach (var process in Process.GetProcessesByName(taskName)) { ...

Memcpy - вылетает исключение
нужно добавлять в массив по одному элементу и при добавлении нового элемента динамически увеличивать память массива но при копировании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача: Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге). Решение: В модуле объекта документа размещен следующий код: Процедура. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru