这是我的两个类NameNode和NameList。我的问题来自于NameList类中的print()方法。如果我有两个名字,比如"Lee"one_answers"Jim",使用上述方法的输出只输出"Lee"。我不确定是否它的追加方法未能添加到列表中,或者如果有一个步骤错误导致tmp不推进到列表中的下一个对象。如有任何帮助,不胜感激。
public class NameNode {
private String lastName;
private NameNode next;
public NameNode(String lastName, NameNode toNext)
{
this.lastName = lastName;
this.next = toNext;
}
public String getName()
{
return lastName;
}
public NameNode getNext()
{
return next;
}
public void setNext(NameNode next)
{
this.next = next;
}
public String toString()
{
return lastName;
}
}
public class NameList {
private NameNode names;
public NameList()
{
names = null;
}
public boolean isEmpty()
{
return names == null;
}
public void append(String name)
{
if(names == null)
{
names = new NameNode(name,null);
}
else
{
NameNode tmp = names;
//tmp = names;
while(tmp.getNext() != null)
{
tmp = tmp.getNext();
tmp.setNext(new NameNode(name,null));
}
}
null
}
public void print()
{
NameNode current = names;
while(current != null)
{
System.out.println(current.getName());
current = current.getNext();
}
}
}
您的NameList
的append
函数有错误。在您的代码中,当您追加第二个名称时,程序转到else语句,在那里它对while循环中的条件求值为false,并且从不追加第二个节点。因此,您的代码始终只能输入第一个元素。请参考更正后的追加函数,希望它能完成这项工作。
public void append(String name)
{
if(names == null) {
names = new NameNode(name,null);
}
else{
NameNode tmp = names;
while(tmp.getNext() != null){
tmp = tmp.getNext();
}
tmp.setNext(new NameNode(name,null));
}
}
因为您在构造函数中只传递一个名称,如果您查看getName()
方法,您将看到您只有一个lastName
。
public NameNode(String lastName, NameNode toNext)
{
this.lastName = lastName;
this.next = toNext;
}
public String getName()
{
return lastName;
}
还有一件事,你只初始化了一个字符串,那就是private String lastName;
,另一个在哪里?