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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2022, 01:01   #1
sbnet
Пользователь
 
Регистрация: 11.10.2022
Сообщений: 45
По умолчанию ArrayIndexOutOfBoundsException

Помогите плэс, йа зопутолся(((((


Код:
     import java.util.Arrays;


public class Matrix {
   private double[][] d;
   private int lac;
   
   public Matrix() {}
   public Matrix(double[][] d, int lac) {
      this.d = d;
      this.lac = lac;
   }

public static void main(String[] args) {
   double[][] a = {{111, 112}, {121, 122, 123}};
   double[][] b = {{211, 212, 213, 214}, {221, 222}, {231}, {241, 242, 243, 244, 245}};
Matrix d5 = new Matrix(a, 12);
Matrix d6 = new Matrix(b, 15);
Matrix d7 = d5.sum(d6);
System.out.println(Arrays.deepToString(d7.d));
}

   public Matrix sum(Matrix m) {
 //     int k = this.d[0].length > m.d[0].length ? this.d[0].length : m.d[0].length;
      double[][] d1 = new double[this.d.length + m.d.length + 5][];

      int j = 0;
int h = 0;

for (double[] d4 : d1) {

d1[h] = h < this.d.length ? new double[this.d[h].length] : new double[m.d[h - this.d.length + 1].length];
 h++;
}

/*
d1[h] = new double[this.d[h].length];
h++;
if (h > this.d.length) {
d1[h] = new double
}
}
*/

h = 0;
      


for (double[] d2 : this.d) {
    
    d1[h] = d2;
      for (double d3 : this.d[h]) {
      
      d1[h][j] = d3;
      j++;
      }
    h++;
}

    for (double[] d2 : m.d) {
        
         d1[m.d.length + h] = d2;
         h++;
}
      //double[] d1 = this.d + m.d;
      int lac1 = this.lac + m.lac;
      return new Matrix(d1, lac1);
   }
      
}
Код:
     
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
	at Matrix.sum(Matrix.java:32)
	at Matrix.main(Matrix.java:19)
Спасибо

32-я строка, это где
Код:
   d1[h] = h < this.d.length ? new double[this.d[h].length] : new double[m.d[h - this.d.length + 1].length];

А 19-я это где
Код:
    Matrix d7 = d5.sum(d6);

Последний раз редактировалось sbnet; 03.12.2022 в 01:16.
sbnet вне форума Ответить с цитированием
Старый 03.12.2022, 02:25   #2
sbnet
Пользователь
 
Регистрация: 11.10.2022
Сообщений: 45
По умолчанию

Все, поправил ошибку. Надо было в строке выше убрать " + 5". Но теперь в 54-ой строке ошибка:
Код:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at Matrix.sum(Matrix.java:54)
	at Matrix.main(Matrix.java:19)
54 это где
Код:
    d1[h][j] = d3;
sbnet вне форума Ответить с цитированием
Старый 13.12.2022, 18:24   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

А что ты хочешь в итоге получить? Что этот код должен сделать? )
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 14.12.2022, 03:38   #4
sbnet
Пользователь
 
Регистрация: 11.10.2022
Сообщений: 45
По умолчанию

Этот метод должен складывать две матрицы.

Последний раз редактировалось sbnet; 14.12.2022 в 03:40.
sbnet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lang.ArrayIndexOutOfBoundsException Lifefine Общие вопросы по Java, Java SE, Kotlin 1 08.11.2010 00:34