我有一个受邀参加聚会的客人的 LinkedList。我想用其他人代替其中一位客人。为此,我在列表中搜索要删除的人,将其删除,然后将新人添加到列表的前面。
到目前为止,这是我的替换方法:
public void replace(String n, String rn, String rf){
boolean match = false;
GuestNode curr = GuestList;
GuestNode replace = new GuestNode(rn,rf);
GuestNode onemore, twomore;
while (match == false && curr != null){
if (curr.getLink().getName().equals(n)){
onemore = curr.getLink();
twomore = onemore.getLink();
curr.setLink(twomore);
match = true;
}
else
curr = curr.getLink();
}
if (match){
GuestList = curr;
addNode(replace);
System.out.println(n+ " has been replaced with " +rn+ ".");
}
else
System.out.println(n+ " was not found.");
}
我的麻烦是,当我运行它时,我可以找到并删除原来的人,并将新人添加到列表的前面,但它会不断丢失其余部分。这是我得到的输出(用户输入粗体):
请输入以下选项之一:排序、搜索、替换、删除、打印、退出
打印10 正在参加,他们喜欢 10 冰淇淋。
九号参加了,他们喜欢九号冰淇淋。
八点参加,他们喜欢八点冰淇淋。
七号参加了,他们喜欢七号冰淇淋。
六是参加,他们喜欢六冰淇淋。
五是参加,他们喜欢 5 冰淇淋。
四人参加,他们喜欢 4 冰淇淋。
三是参加,他们喜欢 3 冰淇淋。
两个正在参加,他们喜欢2个冰淇淋。
一个正在参加,他们喜欢 1 个冰淇淋。请输入以下选项之一:排序、搜索、替换、删除、打印、退出
替换你想删除谁?3
你想把谁放在他们的位置,他们最喜欢的冰淇淋口味是什么?
THIRTYTHREE 33
三已被替换为 THIRTYTHREE。请输入以下选项之一:排序、搜索、替换、删除、打印、退出
打印THIRTYTHREE 参加,他们喜欢 33 冰淇淋。
四人参加,他们喜欢 4 冰淇淋。
两个正在参加,他们喜欢2个冰淇淋。
一个正在参加,他们喜欢 1 个冰淇淋。
我已经处理了几个小时了,我找不到错误在哪里。请帮忙!
编辑:这是我的 GuestNode 的代码,以防问题在那里。
public class GuestNode{
private String name;
private String fav;
private GuestNode link;
public GuestNode(String n, String f){
this.name = n;
this.fav = f;
link = null;
}
public String toString(){
return this.name +" is attending, and they like "+ this.fav +" ice cream.";
}
public String getName(){ return this.name; }
public String getFav(){ return this.fav; }
public GuestNode getLink(){ return this.link; }
private void setName(String n){ this.name = n; }
private void setFav(String f){ this.fav = f; }
public void setLink(GuestNode l){ this.link = l; }
public void clear(){
this.link = null;
}
}