【发布时间】:2013-11-05 18:25:26
【问题描述】:
我有一个受邀参加聚会的客人的链接列表。我想用其他人代替其中一位客人。为此,我正在列表中搜索要删除的人,将其删除,然后将新人添加到列表的前面。
到目前为止,这是我的替换方法:
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 份冰淇淋。
九号参加,他们喜欢九号冰淇淋。
八是参加,他们喜欢 8 冰淇淋。
7 正在参加,他们喜欢 7 冰淇淋。
六个正在参加,他们喜欢 6 个冰淇淋。
五个正在参加,他们喜欢 5 个冰淇淋。
四人参加,他们喜欢 4 冰淇淋。
三个正在参加,他们喜欢 3 个冰淇淋。
有两个参加,他们喜欢 2 个冰淇淋。
一个正在参加,他们喜欢 1 个冰淇淋。请输入以下选项之一:排序、搜索、替换、删除、打印、退出
替换你想删除谁? 三个
你想让谁代替他们,他们最喜欢的冰淇淋口味是什么?
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;
}
}
【问题讨论】:
-
我想你想这样做:
curr.setLink(curr.getLink().getLink()); -
我的教授不清楚他的指示,我认为这就是他想要的。我尝试了一些更新旧访客中的信息以成为新访客,但我也无法让它工作。
标签: java linked-list