Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 4
1

Ошибка в работе класса при создании нового объекта

06.05.2015, 14:37. Показов 985. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть код класса при котором всё работает прекрассно когда один экземпляр, а когда создается второй то выдает IndexOutOfBoundsException. Вот код, здесь вычисляется кросс-корреляционная функция

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
87
public class Data {
 
    LinkedList <Double> X, Y, cloneX, cloneY;
    private LinkedList <Double> dataLeft = new LinkedList();
    private LinkedList <Double> dataRight = new LinkedList();
    private int size;
    Data(LinkedList <Double> X, LinkedList<Double> Y) {
        this.X = X;
        cloneX = (LinkedList)X.clone();
        cloneY = (LinkedList)Y.clone();
        this.Y = Y;
        this.size = X.size();
    }
 
    public double getPearsonCorrelation(LinkedList<Double> X, LinkedList<Double> Y) {
     
        double result = 0;
 
        double sum_sq_x = 0;
 
        double sum_sq_y = 0;
 
        double sum_coproduct = 0;
        
        double mean_x = X.get(0);
 
        double mean_y = Y.get(0);
 
        for (int i = 2; i < X.size() +1; i += 1) {
 
            double sweep = Double.valueOf(i - 1) / i;
 
            double delta_x = X.get(i - 1) - mean_x;
 
            double delta_y = Y.get(i - 1) - mean_y;
 
            sum_sq_x += delta_x * delta_x * sweep;
 
            sum_sq_y += delta_y * delta_y * sweep;
 
            sum_coproduct += delta_x * delta_y * sweep;
 
            mean_x += delta_x / i;
 
            mean_y += delta_y / i;
 
        }
 
        double pop_sd_x = (double) Math.sqrt(sum_sq_x / X.size());
 
        double pop_sd_y = (double) Math.sqrt(sum_sq_y / Y.size());
 
        double cov_x_y = sum_coproduct / X.size();
 
        result = cov_x_y / (pop_sd_x * pop_sd_y);
 
        return result;
 
    }
 
    public void  crossCorrelationData() {
        for (int i = 0; i < size; i++) {
             
            if (Math.abs(getPearsonCorrelation(X,Y))==1) continue;
            
            dataLeft.add(Math.abs(getPearsonCorrelation(X,Y)));
            X.removeFirst();
            Y.removeLast();
           
            if (Math.abs(getPearsonCorrelation(cloneX,cloneY))==1) continue;
           dataRight.add(Math.abs(getPearsonCorrelation(cloneY,cloneX)));
         
           cloneY.removeFirst();
           cloneX.removeLast();
 
        }
    }
    
    
    public LinkedList<Double> getDataRight() {
        return dataRight;
    }
    public LinkedList<Double> getDataLeft() {
        return dataLeft;
    }
 
}
При создании
Java
1
2
Data d = new Data (sd,compress);
         d.crossCorrelationData();
Всё прекрассно, правильные значения и т.д
А вот когда сделать
Java
1
2
3
4
Data d = new Data (sd,compress);
         d.crossCorrelationData();
         Data d1 = new Data (sd,fdim);
         d1.crossCorrelationData();
Для первого объекта выполняется, а дальше получается ошибка. Помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 14:37
Ответы с готовыми решениями:

При создании нового объекта класса NullPointerException
Добрый день. Есть два класса // содержит индексы для таблицы public class Slot { ...

Использование объекта одного класса при создании нового класса
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать...

Ошибка при создании нового документа: Поле объекта не обнаружено (srcElement)
Здравствуйте. Создаю программно новый документ ЭлектронноеПисьмо. Нужно передать текст письма,...

Выскакивает ошибка при создании нового класса формы
Товарищи программисты! Начал писать на C++ Qt при создании класса формы выскакивает ошибка (см....

4
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.05.2015, 14:44 2
fdim
что это и где где оно инициализируется?
0
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 4
06.05.2015, 14:47  [ТС] 3
fdim взят с бд аналогично sd и compress. Там везде одинаково элементов, только разные значения.
Типа так:
Java
1
LinkedList<Double> fdim = mydb.setToCollection("Fractal_dimension");
Просто коллекция с числами

Добавлю, что когда убрать первый объект, то соответственно второй работает нормально
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.05.2015, 14:51 4
текст ошибки бы весь увидеть
0
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 4
06.05.2015, 14:56  [ТС] 5
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.LinkedList.checkElementIndex(LinkedList.java:553)
at java.util.LinkedList.get(LinkedList.java:474)
at cursov.Data.getPearsonCorrelation(Data.java:48)
at cursov.Data.crossCorrelationData(Data.java:84)
at cursov.Cursov.main(Cursov.java:37)
48
Java
1
double delta_y = Y.get(i - 1) - mean_y;
84
Java
1
dataRight.add(Math.abs(getPearsonCorrelation(cloneY,cloneX)));
0
06.05.2015, 14:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2015, 14:56
Помогаю со студенческими работами здесь

Ошибка при создании объекта класса
Привет! Чтобы на протяжении всего поста было понятно о чём я говорю,в конце поста прикреплю код....

Ошибка при создании объекта класса
Есть класс, создаю объект, выходит ошибка &quot;cannot allocate an object of abstract type 'Cat'&quot; Что...

Ошибка при создании объекта класса
Приветствую, форумчане! Возник вопрос при создании объекта класса String. Что самое интересное,...

Ошибка при создании объекта класса
Здравствуйте. В коде ниже при попытке вывести код на экран возникает следующая ошибка: prog.cpp:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru