Вот решил написать класс списка.
Раньше писал на 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;
}
20 января 2009 в 9:03
То что нужно, оказывается static были лишними.
Всем спасибо.
20 января 2009 в 1:01
static ListElementClass prev;
static ListElementClass next;
static String value;
static ListElementClass begin,end;
А чего ты от этого хотел то?=)
сыпь голову пеплом =)))))))))))
и почитай что такое static!!!
20 января 2009 в 0:02
Наверное это будет последняя попытка, и я больше не буду морочить голову.
Вот класс:
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.
Как так ?
19 января 2009 в 23:05
Попользовавшись дебагом увидел одну интерестную вещь.
begin = null;
end = new ListElementClass("66");
это код у меня на конструкторе класа, и вот прикол в том что я смотрю в дебаге, а у меня у полей begin и end одинаковые значения ( 66 ).
О_о
походу из-за этого оно не работает.
Может что-то подскажите.
19 января 2009 в 23:05
После добавления первого элемента begin==end – совершенно нормальное положение вещей.
Вообще, без полного листинга говорить о чём-либо сложно.
19 января 2009 в 22:01
Хорошо бы еще ListElementClass увидеть
19 января 2009 в 21:05
На вскидку код должен вести себя правильно. За исключением того, что
ListElementClass newElement = new ListElementClass(val);
и
end = newElement;
не имеет смысла дублировать в двух вертках (они одинаковы для всех случаев).
А в отладчике по какой ветке код идёт?
И нет ли ошибки в реализации setPrevconnect и setNextConnect?