尝试创建一个方法,用所选替换字符串替换链表中字符串的所有实例。
然而,我所得到的似乎只是检查第三个参数选择的节点,而不会重复列表。
public void replace(String firstItem, String replaceItem, Node n){
if (n != null) {
if (n.getItem().equals(firstItem)) {
n.setItem(replaceItem);
n = n.next();
}
}
}
以下是主要应用:
public class ListApp {
public static void main(String[] args){
Node n4 = new Node("green", null);
Node n3 = new Node("red", n4);
Node n2 = new Node("red", n3);
Node n1 = new Node("red", n2);
LinkedList list = new LinkedList(n1);
System.out.println(list);
list.replace("red", "RED", n1); // CALLING THE METHOD
System.out.println(list);
}
}
然而输出结果如下:
RED, red, red, green
不确定我需要做什么才能检查每个节点。
如果需要,节点库:
package lib;
public class Node {
private String item;
private Node nextItem;
public Node(String str, Node n){
item = str;
nextItem = n;
}
public String getItem(){
return item;
}
public void setItem(String str){
item = str;
}
public Node next(){
return nextItem;
}
public void setNext(Node n){
nextItem = n;
}
}
非常感谢任何信息,谢谢!
答案 0 :(得分:1)
您的代码存在的问题是,您没有以递归方式调用该函数。
此外,您可能希望每次都获取下一个节点,而不仅仅是在更换项目时。
因此,您的代码应如下所示:
public void replace(String firstItem, String replaceItem, Node n){
if (n != null) {
if (n.getItem().equals(firstItem)) {
n.setItem(replaceItem);
}
replace (firstItem, replaceItem, n.next());
}
}
答案 1 :(得分:0)
你几乎拥有它:
public void replace(String firstItem, String replaceItem, Node n){
if (n != null) {
if (n.getItem().equals(firstItem)) {
n.setItem(replaceItem);
n = n.next();
}
replace(firstItem, replaceItem, n); //Recursive call here
}
}