为什么不返回新字符串?

时间:2011-02-05 23:02:55

标签: java string recursive-query

我有一个反转字符串的递归方法(HW赋值,必须是递归的)。我做到了....但它只在第一次传递后返回字符串的值。通过分析每次传递后的输出,我可以看到它确实正确地完成了它的工作。继承我的代码,输出我得到它:

    String s = "Hello, I love you wont you tell me your name?";
int k=0;
public String reverseThisString(String s) {
    if(k!=s.length()) {
        String first =s.substring(0,k)+s.charAt(s.length()-1);
        String end = ""+s.substring(k, s.length()-1);
        k++;
        s=first+end;
        System.out.println(s);
        this.reverseThisString(s);
    }
    return s;
}

输出:

?Hello, I love you wont you tell me your name

2 个答案:

答案 0 :(得分:3)

我认为你需要改变这个:

this.reverseThisString(s);

到此:

return this.reverseThisString(s);

否则简单地丢弃方法调用的结果。

我还建议您将k更改为方法的参数而不是成员。

答案 1 :(得分:0)

像马克说的那样,你忘记了回复陈述。

此外,还有一种更简单的方法来反转字符串(这也是我目前的作业:P)

public String reverse(String s) {
    if(s.length() <= 1)
        return s;
    return reverse(s.substring(1))+s.charAt(0);
}