2017-11-19 16 views
0

文字列が与えられ、開始点がデリミタの前の任意の数値を返す関数を作成しようとしています(', ')。したがって手渡された場合("45,621,9", 0)それは45を返します。StringIndexOutOfBoundsException - 処理

これは私が持っているもので、文字列の最後を叩いてからStringIndexOutOfBoundsExceptionString index out of range: 8と投げるまでうまくいきます。

だから私が("45,621,9", 7)で試してみると、私はそのエラーを受け取ります。どのように私は文字列の終わりを処理し、ループを停止することができますか?私はnullチェックを使用することを考えましたが、charは原始的なので私はできません。

final char delim = ','; 
char dataStorage; 

int nextItem (String data, int startFrom) { 
    String dataValue = ""; 
    for (int i = startFrom; i < delim; i++) { 
    dataStorage = data.charAt(startFrom); 
    if (dataStorage != delim) { 
     dataValue = dataValue + dataStorage; 
     startFrom ++; 
    } 
    } 
    startFrom++; 
    return Integer.parseInt(dataValue); 
} 

は今、私はnextItem("45,621,9", 7)を呼び出す場合、私はそれが9を返却して、ループを停止する必要があり、その例外を取得します。

+0

ループ条件は本当に意味がありません:for(int i = startFrom; i

+0

タグを言語名 – derloopkat

答えて

-1

Jon Skeetからのコメントを参照してください。 forループが正しくありません。以下のように修正してみてください: -

for (int i = startFrom; i < data.length(); i++){ 
     dataStorage = data.charAt(i); 
      if(dataStorage != delim){ 
       dataValue = dataValue + dataStorage; 
       i++; 
      } 
+0

に追加してください。正しくタグにタグを付けてください。 –

関連する問題