Java-在递归类中返回字符串的问题

标签 java string recursion

我正在尝试创建一个递归类,它采用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/

相关文章:

java - 将复杂的对象图放入 gemfire 区域

java - 如何将docker容器日志保存在机器上而不是容器中

c - 存储在注册表中的字符串值如何不以 null 结尾?

algorithm - 如何改进我的交通拥堵递归求解器的算法?

java - 如何在 Heroku 上部署 java gradle 应用程序

javascript - 使用 java servlet 的 ajax 多输入表单验证不起作用。 Ajax不显示错误

java - 如何发现 HashMap 中哪个值出现次数最多?

string - Haskell 同时获取和删除

java - 得到递归方法的错误输出

python - 了解递归函数的输出