0

文字列を逆にする再帰メソッドがあります(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
4

2 に答える 2

3

これを変更する必要があると思います:

this.reverseThisString(s);

これに:

return this.reverseThisString(s);

それ以外の場合、メソッド呼び出しの結果は単に破棄されます。

また、kをメンバーではなく、メソッドのパラメーターに変更することをお勧めします。

于 2011-02-05T23:05:45.573 に答える
0

マークが言ったように、return ステートメントを忘れました。

また、文字列を逆にする簡単な方法があります(これは私の現在の宿題でもあります:P )

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

于 2011-02-05T23:23:08.447 に答える