パーティーに招待されたゲストの LinkedList があります。ゲストの 1 人を別の人と交換したい。そのために、削除する人をリストから検索して削除し、新しい人をリストの先頭に追加しています。
これまでの私の置換方法は次のとおりです。
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 人のアイスクリームが好きです。
ナインが参加しており、9人のアイスクリームが好きです。
エイトが出席し、彼らはエイトのアイスクリームが好きです。
セブンが通っていて、セブンのアイスクリームが好きです。
6 人が参加しており、6 人のアイスクリームが好きです。
5 人が参加しており、5 人のアイスクリームが好きです。
4 人が参加しており、4 人のアイスクリームが好きです。
3 人が参加しており、3 人のアイスクリームが好きです。
2 人が参加しており、2 人のアイスクリームが好きです。
1 人が参加しており、彼らは 1 つのアイスクリームが好きです。次のオプションのいずれかを入力してください: 並べ替え、検索、置換、削除、印刷、
置換の終了誰を削除しますか? 3
代わりに誰を入れたいですか? また、好きなアイスクリームのフレーバーは何ですか?
THIRTYTHREE 33
three は THIRTYTHREE に置き換えられました。次のオプションのいずれかを入力してください: 並べ替え、検索、置換、削除、印刷、印刷
終了THIRTYTHREE が出席し、33 のアイスクリームが好きです。
4 人が参加しており、4 人のアイスクリームが好きです。
2 人が参加しており、2 人のアイスクリームが好きです。
1 人が参加しており、彼らは 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;
}
}