0

文を再帰的に逆にしたいのですが、以下は私の次のコードです。私は他のどの基地のケースが私が世話をしているのか知りたかった。そして、文字列がnullの場合の基本ケースでは、それをどのように処理する必要がありますか?

public String reverse(String s) {
int n = s.indexOf(' ');
if(n == -1)
    return s;
return reverse(s.substring(n+1))+" "+s.substring(0,n);

}  
4

2 に答える 2

2

の逆nullnullので、簡単です。

if(s == null) return null;

あなたのメソッドは を返す可能性があるため、ステートメント内の値を参照してそれに追加しようとnullする前に、いくつかの null チェックも行います。returnだから、何か...

String reversed = reverse(s.substring(n+1));
if(reversed != null) return reverse + " " + s.substring(0,n);
else return s;

他のすべては問題ないように見えます。他の基本ケースは必要ありません。もちろん、これは句読点や大文字と小文字の情報を含め、文をそのまま正確に逆にします。このようなことをしたい場合は、より激しい処理が必要になります。

適切な大文字と小文字の構造を確保するために、通常の基本ケースで次のようにするでしょう。

if(n == -1) {
    s = s.toLowerCase();
    String firstLetter = new String(s.charAt(0));
    s = s.replaceFirst(firstLetter, firstLetter.toUpperCase());
    return s;
}

句読点は、ピリオド、感嘆符、疑問符以外の記号がある場合は特に複雑になります。

于 2012-10-22T18:00:10.603 に答える
0

あなたの場合、文字列がnullの場合、空の文字列( "")を返すことができます。nullを返すには、呼び出し元の関数でnullを処理する必要があり、ケースを見逃すと、NullPointerExceptionが発生する可能性があります

于 2012-10-22T18:16:19.930 に答える