2016-08-15 30 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

すべきですか? (エラーメッセージには、 "MainClass.length"ではなく例外が表示されるはずです...例外は本当に重要で、メッセージはあなたにとって有益であると期待しています...) –

+0

あなたの再帰であなたの文字列の最後に、あなたは長さ0の文字列を持っています、それは ''ヌル ''ではありません。あなたのチェック '' str == null''は意味をなさない。 – f1sh

+0

'return String.length()'? –

答えて

3

あなたは、あなたのString引数が空の文字列である場合を忘れてしまったあなたのチェックにすることを含める:

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

あなたが得る例外はこの中で、間違って何が起こっているのかについての貴重な情報が含まれていることに注意してください空のStringオブジェクトにsubstring(1)と呼ぶため、おそらくStringIndexOutOfBoundsExceptionです。

1

それはあなたが `str`が空の文字列への参照である場合に起こることを期待しない何

public int length(String str) { 

if (str==null||str.isEmpty()) { 
    return 0; 
}else { 
return length(str.substring(1))+1 
} 
関連する問題