2012-04-22 30 views
0

私のアプリケーションでは、マップとポイント(配列)が正常に動作しています。簡単な質問:私はsubstring()、 "stringIndexOutOfBoundException"で致命的な例外を持っています。Android SDK。文字列インデックスの範囲外の例外

一般に、それは何を指していますか?

substring()を使用して文字列の最後を過ぎていますか?

おかげで、

答えて

0

はい、あなたは一般的に、あなたの文字列の範囲の終わりを過ぎていきます。

Java APIはそうであってもわかります...

はIndexOutOfBoundsException - beginIndexが負の値またはこのStringオブジェクトの長さよりも大きい場合。

APIの使用に慣れている必要があります。メソッドがスローする例外とその理由を示します。

部分文字列を入力する前に、文字列の長さと値を印刷してください。それはあなたが問題を見るのを助けるでしょう。

たとえば...

String testing = "Hello StackOverflow"; 
System.out.println("Length of testing = " + testing.length); 
System.out.println("Value of testing = " + testing); 
testing.substring(1,2); 
+0

開始インデックスは1から始まる必要がありますが、開始インデックスとして0を使用しました。部分文字列の2番目のパラメータは1です(それぞれの文字を解析して特定の文字を検索したい、つまり 'variable.substring(0,1);'これは 'variable.substring(1,2);')でしょうか? –

+0

Javaの部分文字列がどのように機能しているかを完全に理解できませんでした。 PHPでは、終わりのインデックスは、どこで停止するかではなく、キャプチャする文字を示します。 JAVAでは、2番目のパラメータは、インデックスの開始後にピックアップする文字数ではなく、どこで停止するかを指示します。ありがとう –

0

公式ドキュメントhereで述べたように:

パブリック文字列のサブストリング(int型beginIndexの)

はの列である新しい文字列を返します。この文字列。部分文字列は、指定されたインデックスにある文字で始まり、この文字列の最後まで拡張されます。

例外:IndexOutOfBoundsException - beginIndexが負であるか、 がこのStringオブジェクトの長さより大きい場合

1
testing.substring(1,2); 

は、私が(ちょうど単一の文字である)1の長さの文字列をつかむためsubstring()を使用していないだろう

(私は特定の文字を見つけるために、各文字を解析したいです)特定の位置についてはcharAt(int)となります。文字列内のすべての文字を調べる必要がある場合は、最初にchar[]toCharArray()を使用)に変換し、それを反復する方が良いでしょう。

関連する問題