КАРТА САЙТА
Sibnet.ru
Sibnet.ru

Sibnet.ru — это информационно-развлекательный интернет-проект, ориентированный на широкий круг Сибирского региона.
По данным Rambler Top100, Sibnet.ru является самым популярным порталом в Сибири.

Контакты:
АО "Ринет"
ОГРН 1025402475856
г. Новосибирск, ул. Якушева, д. 37, 3 этаж
отдел рекламы:
(383) 347-10-50, 347-06-78, 347-22-11, 347-03-97

Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль

Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!

Здравствуйте, гость ( Вход | Регистрация )



 
Тема закрытаОткрыть новую тему
> откуда Nullpointerexception растёт
RoMeN
сообщение 29.1.2014, 17:48
Сообщение #1


Болтун
Group Icon


Группа: JA:MP Player
Сообщений: 771
Регистрация: 16.1.2008
Из: ...
Пользователь №: 17 075



Репутация:   170  


всем привет, очень прошу помощи, что в инициализации я сделал не так? (забыл приписать что Java)

Код

public class Queue
{
    public int GROUP_ID;
    public int ITEM_ID;

    Queue()
    {
        GROUP_ID = 0;
        ITEM_ID = 0;
    }
}



public class DataBaseControl
{
    final private int queueSize = 10; //максимальный размер очереди

    private Queue[] theQueue;   //массив, представляющий псевдобазу для хранения очереди
    private int addPointer;     //указатель для добавления новых элементов
    private int queuePointer;   //указатель для извлечения элементов


    DataBaseControl()
    {
        theQueue = new Queue[queueSize];
        for(int i = 0; i < queueSize; i++)
        {
            theQueue[i].GROUP_ID = 0;    //почему здесь выходит nullpointerexception?? я же инициализировал двумя строками выше?
            theQueue[i].ITEM_ID = 0;
        }

        addPointer = 0;
        queuePointer = 0;
    }

    //.....

}


Сообщение отредактировал RoMeN - 29.1.2014, 17:49
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
HiSER
сообщение 29.1.2014, 21:19
Сообщение #2


Бородатый
Group Icon


Группа: Пользователи
Сообщений: 517
Регистрация: 24.9.2007
Из: Барнаул
Пользователь №: 6 410



Репутация:   37  


Не знаю про синтаксис Java, не пользовался.
Но на Си было бы помойму так:
Код

theQueue[i]->GROUP_ID = 0;
theQueue[i]->ITEM_ID = 0;


Сообщение отредактировал HiSER - 29.1.2014, 21:19
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
shouhei
сообщение 29.1.2014, 21:55
Сообщение #3


Himmelsstürmer
Group Icon


Группа: Events and facts club
Сообщений: 33 866
Регистрация: 2.4.2008
Из: Caught somewhere in time
Пользователь №: 27 739



Репутация:   1421  


С точки зрения синтаксиса — всё правильно. В яве все объекты — указатели, потому конкретно указателей то там и нет. Как нет и такой математики вида pointer++ как в Цэ. Точка там корректна. Только такое впечатление, что массив нормально проинициализироваться не может. Может быть из-за queueSize, может быть ещё по какой причине.

ТС, вот тупо, ради отладки, сделай вывод queueSize первой строкой цикла.

И ещё одно, я не вижу никакого смысла в этом куске кода, ибо каждый объект из массива итак инициализируется (0,0)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
RoMeN
сообщение 29.1.2014, 23:24
Сообщение #4


Болтун
Group Icon


Группа: JA:MP Player
Сообщений: 771
Регистрация: 16.1.2008
Из: ...
Пользователь №: 17 075



Репутация:   170  


Цитата(shouhei @ 29.1.2014, 21:55) *

ТС, вот тупо, ради отладки, сделай вывод queueSize первой строкой цикла.
с queueSize всё норм, проверял

Цитата(shouhei @ 29.1.2014, 21:55) *

И ещё одно, я не вижу никакого смысла в этом куске кода, ибо каждый объект из массива итак инициализируется (0,0)
так или иначе ошибки сыпятся и дальше, и бо выскакивают уже на [0] итерации

==============================================================
PS: добрый человек подсказал решение:
Цитата

Нужно заполнить массив элементами сперва.
theQueue = new Queue[10]; создает массив для 10 обьектов Queue, но не создает сами обьекты.
вот так должно быть:
Код

public class DataBaseControl
{
    final private int queueSize = 10; //максимальный размер очереди

    private Queue[] theQueue;   //массив, представляющий псевдобазу для хранения очереди
    private int addPointer;     //указатель для добавления новых элементов
    private int queuePointer;   //указатель для извлечения элементов


    DataBaseControl()
    {
        theQueue = new Queue[queueSize];
        for(int i = 0; i < queueSize; i++)
        {
            theQueue[i] = new Queue();
            theQueue[i].GROUP_ID = 0;   //почему здесь выходит nullpointerexception?? я же инициализировал двумя строками выше?
            theQueue[i].ITEM_ID = 0;
        }

        addPointer = 0;
        queuePointer = 0;
    }

    //.....

}



Сообщение отредактировал RoMeN - 29.1.2014, 23:38
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
shouhei
сообщение 29.1.2014, 23:51
Сообщение #5


Himmelsstürmer
Group Icon


Группа: Events and facts club
Сообщений: 33 866
Регистрация: 2.4.2008
Из: Caught somewhere in time
Пользователь №: 27 739



Репутация:   1421  


Цитата(RoMeN @ 29.1.2014, 23:24) *

PS: добрый человек подсказал решение:


Кстати да, про такое я и забыл. Всё, закрываемся?

Но и опять таки, не нужны тебе присваивания 0. У тебя он при создании нулями инициализируется.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Тема закрытаОткрыть новую тему
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 18.4.2024, 23:01
Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов