我正在尝试创建一个递归类,它采用string
作为参数,并从以参数字符串开头的字符串列表中返回一行。如果找不到匹配项,则应返回“”。我似乎已经快到了,但由于某种原因,一旦找到字符串并进入 if 语句,它就会返回该字符串,但随后跳转到代码中的另一个语句。换句话说,它由于某种原因不返回它。任何帮助都会真正有帮助。
public String getLineStartingWith(String _string){
System.out.println("GETLINESTRING: " + _string);
//place parameter string into local string
String string = _string;
//return the line from the stringlist if it starts with the
//parameter string
if(currentString.startsWith(_string)){
System.out.println("CURRENT STRING: " + currentString);
return currentString;
}
restOfList.getLineStartingWith(_string);
return "";
//return restOfList.getLineStartingWith(_string);
}
编辑
我对我的代码做了一些更改。但由于某种原因,它返回当前字符串后,每次都返回restOfList.getLineStartingWith(string)。我认为它没有检测它是否为空
public String getLineStartingWith(String string){
System.out.println("GETLINESTRING: " + string);
//return the line from the stringlist if it starts with the
//parameter string
if(currentString.startsWith(string)){
System.out.println("CURRENT STRING: " + currentString);
return currentString;
}
if(restOfList.isEmpty){
return "";
}
return restOfList.getLineStartingWith(string);
}
最佳答案
你为什么要这样做?
//place parameter string into local string
String string = _string;
这段代码具有完全相同的效果:
public String getLineStartingWith(String string){
System.out.println("GETLINESTRING: " + string);
// etc.
字符串是不可变的,所以你不能对输入做任何坏事。此外,您甚至没有使用 string
(您以后的所有代码都使用 _string
)。
我认为您的问题是没有返回:
restOfList.getLineStartingWith(_string);
尝试:
return restOfList.getLineStartingWith(_string);
您可能还需要另一个基本情况来处理 restOfList
为空。
关于Java-在递归类中返回字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911368/