我想递归地反转一个句子,下面是我的下面的代码。我想知道我照顾的其他基地案件。对于基本情况,如果string为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);
}
答案 0 :(得分:2)
null
的反面是null
,所以很容易:
if(s == null) return 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;
}
标点符号变得更复杂一些,特别是如果您的结尾时段,感叹号或问号不仅仅是。
答案 1 :(得分:0)
在您的情况下,如果字符串为null,则可以返回空字符串(“”)。返回null将要求您在调用函数中处理null,如果您错过了一个案例,则可能会遇到NullPointerException