我试图使用递归方法计算字符串中的字符数。这是我在java中的代码
public class MainClass {
public int length(String str) {
if (str == null) {
return 0;
} else {
return length(str.substring(1))+1; // in eclipse it says : at MainClass.length(MainClass.java:12)
}
}
public static void main(String args[]) {
MainClass m = new MainClass();
System.out.println(m.length("ali"));
}
}
此行不起作用:return length(str.substring(1))+1;
我该如何更正代码?
感谢
答案 0 :(得分:3)
当String
参数为空字符串时,您忘记了这种情况,请在支票中包含该字符串:
if (str == null || str.length()==0) {
return 0;
} else {
[...]
请注意,您获得的异常包含有关出错的重要信息,在这种情况下,它可能是StringIndexOutOfBoundsException
,因为您在空substring(1)
对象上调用String
。
答案 1 :(得分:1)
应该是
public int length(String str) {
if (str==null||str.isEmpty()) {
return 0;
}else {
return length(str.substring(1))+1
}