递归计算字符串中的字符数

时间:2016-08-15 13:04:49

标签: java

我试图使用递归方法计算字符串中的字符数。这是我在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; 我该如何更正代码? 感谢

2 个答案:

答案 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
}