Я пытаюсь получить список имен в очереди для отображения. Когда я вызываю toString из JOptionPane, он ничего не показывает. Что я делаю не так?Узел Строка не отображается
public String toString() {
String input = "";
for(Node<T> current = endNode.getNext(); current != null; current = current.getNext()){
input = input + current.toString() + "\n";
endNode = current;
current = current.getNext();
}
return input;
}
Это странно, потому что, когда я изменить код на:
public String toString() {
int counter = 0;
String input = "";
Node<T> current = endNode.getNext();
// Loops until it goes through all stored nodes
if(current != null){
input = input + current + "\n";
endNode = current;
current = current.getNext();
}
return input;
}//end toString
Он печатает первое имя в очереди. Почему он работает для цикла «if», но не «for»?
EDIT: Вот мой Узла класс:
public class Node<T> {
private T data;
private Node<T> next;
public Node(T data2, Node<T> next2) {
data = data2;
next = next2;
}
public String toString() {
return data.toString();
}
public T getData() {
return data;
}
public Node<T> getNext() {
return next;
}
public void setData(T data2) {
data = data2;
}
public void setNext(Node<T> next2) {
next = next2;
}
Кажется, есть ToString здесь too..could что будет корень проблемы?
Вы звоните 'current.getNext () 'слишком часто (в разделе' for' ITER и в последнем утверждении цикла). Я также не вижу, где инициализируется 'endNode'; вы уверены, что 'getNext()' начинает возвращать первый элемент? Чтобы увидеть хотя бы некоторый вывод, выполните 'String input =" Результат: ";' или что-то. – Kenney
endNode инициализируется из другого java-файла с именем LinkedQueue. например: static LinkedQueue queue = new MyQueue <>(); , Я пропустил current = current.getNext() из оператора for и оставил один под ним. Когда я использовал sysout (текущий), он зациклился на всех именах просто отлично. EDIT: он пропускает первое имя: l –
Xirol
Как @Kenney говорил, попробуйте добавить String input = "Result:"; чтобы увидеть, если вы получите что-нибудь обратно –