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

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

12.08.2010, 19:29. Показов 2639. Ответов 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 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
12.08.2010, 23:07
Ёрик, приаттачьте архив с исходниками и напишите последовательность действий для повторения ексепшена
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 01:20
Исключение выдает изза нулевого массива т.е. судя по всему могу предположить(код не просматривал, только одним глазком) массив определен на комплексные числа потому с ними и работаета с DoubleNumber уже массив не заполняется
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2010, 08:34
lifestyle, есть подозрение что в мейне что-то напутано с вызовом - null передается или от него вызывается
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 10:05  [ТС]
Вот main: (чуть позже выложу все исходники)

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
84
85
86
import java.io.*;
import java.lang.Exception;
 
public class Main {
 
    public static void main(String args[]) throws IOException, WrongSize, ClassCastException
    {
        PrintWriter pw = new PrintWriter(System.out,true);
        try
        {
            ComplexNumber elemCom1 = new ComplexNumber(-3.0,4.0);
            ComplexNumber elemCom2 = new ComplexNumber(-2.0,5.0);
            ComplexNumber elemCom3 = new ComplexNumber(7.0,-3.0);
            ComplexNumber elemCom4 = new ComplexNumber(8.0,-1.0);
            
            ComplexNumber[][] arrayOfComplex = { {elemCom1,elemCom2 }, {elemCom3, elemCom4}}; 
            ComplexNumber[][] arrayOfComplex2 = { {elemCom2,elemCom3 }, {elemCom1, elemCom4}}; 
            
            Matrix m = new Matrix(arrayOfComplex);
            Matrix m2 = new Matrix(arrayOfComplex2);
            
            pw.println("The first matrix: ");
            m.print();
            pw.println("The second matrix: ");
            m2.print();
            pw.println("Transposing of the first matrix: ");
            (m.transpose()).print();
            pw.println("Add two matrix: ");
            (m2.addition(m)).print();
            pw.println("Subtruct two matrix: ");
            (m.subtraction(m2)).print();
            
            DoubleNumber elemDoub1 = new DoubleNumber(-3.0);
            DoubleNumber elemDoub2 = new DoubleNumber( 4.0);
            DoubleNumber elemDoub3 = new DoubleNumber(-7.0);
            DoubleNumber elemDoub4 = new DoubleNumber( 9.0);
            
            DoubleNumber[][] arrayOfDouble1 = { {elemDoub1,elemDoub2 }, {elemDoub3, elemDoub4}}; 
            DoubleNumber[][] arrayOfDouble2 = { {elemDoub3,elemDoub1 }, {elemDoub4, elemDoub3}}; 
            
            Matrix m5 = new Matrix(arrayOfDouble1),m6 = new Matrix(arrayOfDouble2);
            
            m5.print();
            pw.println();
            m6.print();
            pw.println();
            pw.println("Multiplication of the fifth and the sixth matrices: ");
                                          // [COLOR="Red"]После вызова этого метода выбрасывается исключение[/COLOR]
            (m5.multiplication(m6)).print();
            
            ComplexNumber com = new ComplexNumber(2.0,2.0);
            ComplexNumber com2 = new ComplexNumber(1.0,-1.0);
            
            pw.println(com);
            pw.println(com2);
            
            pw.println("Absolute value of the fist complex number: ");
            pw.println(com.abs());
            
            pw.println("Addition of the fist and the second complex numbers: ");
            pw.println(com.addition(com2));
            pw.println("Subtraction of the fist and the second complex numbers: ");
            pw.println(com.subtraction(com2));
            pw.println("Multiplication of the fist and the second complex numbers: ");
            pw.println(com.multiplication(com2));
            pw.println("Division of the fist and the second complex numbers: ");
            pw.println(com.division(com2));
            
            
        }
        catch(NegativeArraySizeException e)
        {
            PrintWriter pwEr = 
                new PrintWriter (System.err,true);
            pwEr.println("Error: " + e);
        }
        catch(WrongSize e)
        {
            PrintWriter pwEr = 
                new PrintWriter (System.err,true);
            pwEr.println("Error: " + e);
        }
    }
    
    
}

Вообще, исключение выбрасывается в методе Матрицы subtraction, в строчке
Java
1
result.data_[i][j] = result.data_[i][j].addition(resultOfMultiplication);
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 11:22
Exception in thread "main" java.lang.NullPointerException
at Matrix.multiplication(Matrix.java:123)
at Main.main(Main.java:73)

странно,следуя этому сообщению ошибка происходит в MAINе на 73 строке и в методе умножения матрицы.в мэйне ничего подозрительного на этой строке нету, а метода умножения вообще не нашел, проверь его еще раз, скорей всего там напортачил чего-то с массивом.Скорей всего ты там пустуя матрицу умножаешт ил иона не определяется просто как надо...
UPD
Нашел умножение, просто под другими строками.
а как вы создаете матрицу из Interface"а . что то я запутался в вашем методе....
зачем вы рекурсивно его вызываете?!Что за addition? можно было мне кажетсчя намного проще написать метод.Разбиритесь с методом умножения лучше всего в дебаггере.
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 11:30  [ТС]
Как нет метода?? У матрицы 69 строка
Java
1
2
3
4
5
6
7
8
9
10
11
12
            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);
                        }
В классе DoubleNumber 53 строка
Java
1
2
3
4
5
6
7
        public UserNumber multiplication(UserNumber num) {
                
                DoubleNumber temp = (DoubleNumber)num;
                
                return new DoubleNumber(value_ * temp.value_);
 
        }
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 11:37
Где конструктор
Matrix result = new Matrix(rows_, columns_);
Вообще вы тут намутили конечно))))Не стоит всегда абсолютно все разюивать на классы используя ООП...
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 11:54  [ТС]
Короче весь код выкладываю
Так, тут не поддерживаются фомарты .java и tar!
В общем здесь архив tar, сжатый bzip2
http://slil.ru/29558871
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 12:04
зачем код ты ответь на вопрос где конструтор в Matrix вида Matrix(int row,int col) ???
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 12:40  [ТС]
Зачем код? Так просили выложить. А конструктор вот:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    public Matrix(int row,int col)
    {
        if((col <= 0) || (row <= 0))
        {
            throw new NegativeArraySizeException("Sizes of array must be positive");
        }
        else 
        {
            rows_ = row;
            columns_ = col;
            data_ = new UserNumber[row][col];
        }
    }
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 13:26
Кажется нашел проблему!
У тебя в методe addition у DoubleNumber при сложении матриц используется две матрици и та матрица в которую записывается результат обьявляется "пустой" т.е. все ее значения NULL , а в этом методе происходит сложение след образом resMat[i][j]=resMat[i][j]+anotherMat[i][j] т.е. Null+3 например.
"незаконное" выражение потому он и выкидывает исключение на NullPointerException. Обьявляй новые матрици не как NULL, а что бы все элементы матрицы равнялись или 0 , например в методе сложения обьявляй стрицу с 0 .
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 13:37  [ТС]
Не понимаю, у меня же в конструкторе выделяется массив

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        public Matrix(int row,int col)
        {
                if((col <= 0) || (row <= 0))
                {
                        throw new NegativeArraySizeException("Sizes of array must be positive");
                }
                else 
                {
                        rows_ = row;
                        columns_ = col;
                        data_ = new UserNumber[row][col];
                }
        }
Кстати, приавильно, отдебажил, точно нул эелементы. Но как матрица может быть пуста?? При выделении массива вызывается конструктор по умолчанию у DoubleNumber, в нем происходит генерация случайных чисел.

Java
1
2
3
4
5
6
    public DoubleNumber() {
        Random r = new Random();
        
        value_ = r.nextDouble();
        
    }
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2010, 14:00
Ёрик, вы выделили память под матрицу, но она заполнена значениями по умолчанию - null.
Матрица конечно не равна null, но вот для ее элементов-то вы конструктор не вызываете и поэтому они null


ЗЫ. можно было сжать в обычный zip и приаттачить. Ну или самому на java написать архиватор в zip- это не сложно
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 14:33  [ТС]
А.. понятно. Тут же интерфейс, просто если бы я указал класс DoubleNumber вместо интерфейса UserNumber, то при выделении массива должен был вызываться конструктор по умолчанию у DoubleNumber. Но так как здесь интерфейс, то конструктор по умолчанию не вызывается. Придется фабрику объектов, что ли делать... Мне нужно сделать так, чтобы "виртуально" вызывался конструктор по умолчанию, т.е. тот конструктор, на объект какого типа ссылается ссылка.

Только не пойму, почему не вылетает исключение у ComplexNumber, смотрю тоже там значения NULL
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2010, 14:43
если вы напишете так
Java
1
UserNumber test = new ComplexNumber(6.2, 7.1);
то объект будет создан
Цитата Сообщение от Ёрик Посмотреть сообщение
то при выделении массива должен был вызываться конструктор по умолчанию у DoubleNumber
Это почему же?
В этой строке
Java
1
data_ = new UserNumber[row][col];
вы просто объявляете набор переменных, под которые надо выделять память
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 16:30  [ТС]
ВЫ не поняли,что я имел ввиду:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public Matrix(int row,int col)
        {
                if((col <= 0) || (row <= 0))
                {
                        throw new NegativeArraySizeException("Sizes of array must be positive");
                }
                else 
                {
                        rows_ = row;
                        columns_ = col;
                        data_ = new UserNumber[row][col];
 
                        for ( int k = 0; k < 3; k++ )
                             for ( int j = 0; j < 3; j++)
                                     // Здесь каждый раз конструктор по умолчанию вызывается
                                     data_[k][j] = new UserNumber();
                }
        }
Мне писать фабрику объектов, чтобы вызывался тот конструктор, на объект какого типа ссылается ссылка или что-н. другое можно придумать? Просто у меня здесь параметр UserNumber, а я могу передать в качестве объекта любой подкласс.
Понятно, что мне надо?
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 17:12
вот методы умножения и сложения:
C#
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
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++)
                {
                    //TODO
                    UserNumber resultOfMultiplication = (temp.data_[i][k].multiplication(src.data_[k][j]));
                    result.data_[i][j] = result.data_[i][j].addition(resultOfMultiplication);//Тут исключение вылетает
                    // изза выраженим с нулевой матрицой идем в метод сложения и смотрим.
         }
        return result;
      }
 
 public Matrix addition(Matrix another) throws WrongSize {
        Matrix A = this;
        if (another.rows_ != A.rows_ || another.columns_ != A.columns_) 
            throw new WrongSize("Adding 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] = A.data_[i][j].addition(another.data_[i][j]);
        return result;
    }
Смотри вот твой конструктор:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Matrix(int row,int col)
{
    if((col <= 0) || (row <= 0))
    {
        throw new NegativeArraySizeException("Sizes of array must be positive");
    }
    else 
    {
        rows_ = row;
        columns_ = col;
        data_ = new UserNumber[row][col];//А вот и гвоздь программы! 
                      //Создается матрица под UserNumber величиной row x col 
                      //НО ВСЕ ЕЕ ЭЛЕМЕНТЫ РАВНЫ NULL! 
    }
}
Теперб понял в чем проблем? И что мы пытаемся тебе обьяснить?Сейчас тебе конкретно указал на проблему ради проверки возьми задай ему опредленную ма трица например { {1,1},{1,1} } и посмотри что будет=)
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
13.08.2010, 20:34  [ТС]
Спасибо, но я уже понял где проблема (писал об этом)!!! Ее еще объяснил M128K145. Как ее исправить? У меня же не матрица целых чисел, а матрица объектов!! В качестве ее элементов может стать экземпляр класса, который реализует интерфейс UserNumber. У каждого класса поля свои, поэтому нужен как бы "виртуальный" конструктор, который делал со своими полями, что надо (инициализировл бы нулями, рандомно числа генерировал, делил на нуль и т.п.) Есть идеи как-н. по другому сделать? Просто у меня поля объявлены как final, поэтому я не могу создать метод в интерфейсе и реализовать для каждой класса како-л. метод, который изменяет данные поля.
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 21:10
ну заполни обьектами тогда матрицу. ты чего то не понимаешь , мне кажеться, ведь мы втроем говорим об одном и том же и я и M128K145 говорим тебе одно и тоже решение я тебе уже в самом коде расписал в чем проблема и сказал что сделать. вчем проблема то?))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2010, 21:10
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru