这是我的两个类NameNode和NameList。我的问题来自NameList类中的print()方法。如果我有两个名字,可以说“Lee”和“Jim”,使用所述方法的输出只打印出“Lee”。我不确定它的append方法是否无法添加到列表中,或者是否存在步骤错误导致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();
}
}
}
答案 0 :(得分:1)
master
append
函数中存在错误。在您的代码中,当您附加第二个名称时,程序将转到else语句,其中它为while循环中的条件计算false,并且从不附加第二个节点。因此,您的代码始终只能输入第一个元素。
请参阅更正后的附加功能,希望它可以完成这项工作。
NameList
答案 1 :(得分:0)
因为您在构造函数中只传递了一个名称,如果查看getName()
方法,您将看到只有一个lastName
。
public NameNode(String lastName, NameNode toNext)
{
this.lastName = lastName;
this.next = toNext;
}
public String getName()
{
return lastName;
}
还有一件事,你刚刚初始化了一个字符串,这是private String lastName;
,另一个是哪一个?