2016-08-15 69 views
1

我想通過遞歸方法計算字符串中的字符數。這是我在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; 我怎樣才能正確的代碼? 感謝

+3

你期望發生,如果'str'是一個空字符串的引用? (請注意,錯誤消息應該顯示涉及的異常,而不僅僅是「在MainClass.length」中......異常非常重要,並且我期望該消息對您有用......) –

+0

當您到達在遞歸中你的字符串結尾,你有一個長度爲0的字符串,它不是「null」。你的檢查''str == null''沒有意義。 – f1sh

+0

'return String.length()'? –

回答

3

你忘了,當你String參數爲空字符串的情況下,包括在你的檢查:

if (str == null || str.length()==0) { 
    return 0; 
} else { 
[...] 

請注意,您得到的異常包含什麼錯,在這個有價值的信息這可能是StringIndexOutOfBoundsException,因爲您在空的String對象上調用substring(1)

1

應該

public int length(String str) { 

if (str==null||str.isEmpty()) { 
    return 0; 
}else { 
return length(str.substring(1))+1 
}