文を再帰的に逆にしたいのですが、以下は私の次のコードです。私は他のどの基地のケースが私が世話をしているのか知りたかった。そして、文字列が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);
}
の逆null
なnull
ので、簡単です。
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;
}
句読点は、ピリオド、感嘆符、疑問符以外の記号がある場合は特に複雑になります。
あなたの場合、文字列がnullの場合、空の文字列( "")を返すことができます。nullを返すには、呼び出し元の関数でnullを処理する必要があり、ケースを見逃すと、NullPointerExceptionが発生する可能性があります