singlepost

Вопрос по Java'e << На главную или назад  

Вот решил написать класс списка.
Раньше писал на c++, решил попробовать на яве.И вот сходу не получается реализовать добавление.Вместо того чтобы добавлять, оно просто заменяет елемент ( смотрел в дебаге).
Вот ф-ция добавление елемента с правой стороны.
Список двухсвязный, есть поля begin,end – начало и конец соответственно.
Подскажите где ошибка.

if (end == null)
{
ListElementClass newElement = new ListElementClass(val);
newElement.setPrevConnect(null);//aka newElement->prev = null
newElement.setNextConnect(null);
end = newElement;
begin = newElement;
} else
{
ListElementClass newElement = new ListElementClass(val);
end.setNextConnect(newElement);
newElement.setPrevConnect(end);
newElement.setNextConnect(null);
end = newElement;
}

7 ответов в теме “Вопрос по Java'e”

  1. 7
    Роман Яворский ответил:

    То что нужно, оказывается static были лишними.
    Всем спасибо.

  2. 6
    Andrey Burlutskiy ответил:

    static ListElementClass prev;
    static ListElementClass next;
    static String value;
    static ListElementClass begin,end;

    А чего ты от этого хотел то?=)

    сыпь голову пеплом =)))))))))))

    и почитай что такое static!!!

  3. 5
    Роман Яворский ответил:

    Наверное это будет последняя попытка, и я больше не буду морочить голову.
    Вот класс:
    public class ListClass {
    public ListClass()
    {
    begin = new ListElementClass("1");
    end = new ListElementClass("2");
    }
    static ListElementClass begin,end;
    }

    public class ListElementClass {
    public ListElementClass(String val)
    {
    value = val; //может тут value = new String(val); ?
    }
    static ListElementClass prev;
    static ListElementClass next;
    static String value;
    }

    и вот получается я делаю так:
    myList = new ListClass();

    в итоге у меня myList.begin.value == 2 иmyList.end.value == 2 , хотя по идее myList.begin.value == 1.
    Как так ?

  4. 4
    Роман Яворский ответил:

    Попользовавшись дебагом увидел одну интерестную вещь.

    begin = null;
    end = new ListElementClass("66");

    это код у меня на конструкторе класа, и вот прикол в том что я смотрю в дебаге, а у меня у полей begin и end одинаковые значения ( 66 ).
    О_о
    походу из-за этого оно не работает.
    Может что-то подскажите.

  5. 3
    Александр Чигринец ответил:

    После добавления первого элемента begin==end – совершенно нормальное положение вещей.

    Вообще, без полного листинга говорить о чём-либо сложно.

  6. 2
    Евгений Паньков ответил:

    Хорошо бы еще ListElementClass увидеть

  7. 1
    Александр Чигринец ответил:

    На вскидку код должен вести себя правильно. За исключением того, что
    ListElementClass newElement = new ListElementClass(val);
    и
    end = newElement;

    не имеет смысла дублировать в двух вертках (они одинаковы для всех случаев).

    А в отладчике по какой ветке код идёт?

    И нет ли ошибки в реализации setPrevconnect и setNextConnect?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.