我试图获取队列中要显示的名称列表。 当我从JOptionPane调用toString时,它不显示任何东西。我究竟做错了什么?节点字符串不显示
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'循环起作用?
编辑:这是我的节点类:
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( )'太频繁(在ITER部分和循环的最后一个语句中)。我也没有看到'endNode'被初始化的地方;你确定'getNext()'开始返回第一个元素吗?要查看至少一些输出,请执行'String input =“结果:”;'或其他。 – Kenney
endNode是从另一个名为LinkedQueue的java文件初始化的。像这样:static LinkedQueue queue = new MyQueue <>(); 。我省略了for语句中的current = current.getNext(),并将其放在下面。当我使用sysout(current)时,它会遍历所有名字。编辑:它跳过第一个名字:l –
Xirol
就像@Kenney说的尝试添加String input =“Result:”;看看你是否得到任何东西 –