2017-02-23 9 views
-2
public static float getSelectedHeight() { 
    String selectedHeightValue = (String)heightSpin.getSelectedItem(); 
    if (heightSpin.getSelectedItemPosition() == 0) { 
    String feets = selectedHeightValue.substring(0,1); 
    String inches = selectedHeightValue.substring(2,4); 

    return (float) (Float.parseFloat(feets) * 0.3048) + (float) (Float.parseFloat(inches) * 0.0254); 

    } else { 
    return Float.parseFloat(selectedHeightValue); 
    } 
} 

エラー文字列のインデックスは...私の場合StringIndexOutOfBoundsExceptionを解決するには?私はそれを解決する方法がわからないバウンド例外のうち

**java.lang.StringIndexOutOfBoundsException: length=2; regionStart=2; regionLength=2** 

答えて

0

は問題がへselectedHeightValue.substring(...)

でラインをあるかもしれない、この問題を解決するために私を助けてくださいそれを解決するには、まず部分文字列を使って操作を行う前に、selectedHeightValueが有効であることを確認する必要があります(NULLではなくEMPTYでない)。

そして、string sizeが存在しない文字列内の位置にアクセスしようとすると、サイズを超えないように、その部分文字列を作成するのに十分であることを確認してください。

Exmple

:文字列 "ABC" はサイズ3を持っており、ポジションを持っている:0,1,2。あなたが存在しないものにアクセスしたいので、私が推測するよりも、位置3とそれ以上(4,5,6 ...)の文字列 "ABC"にアクセスしようとするとエラーが出るでしょう。

+0

あなたはあなたの「親指のルールは、」Javaの権利で間違っていることを知っていますか?文字列の比較は 'equals'で行う必要があります – 0xDEADC0DE

+0

@ 0xDEADC0DE私は書いている時に急いでいました。私は答えを更新しました。 :) –