1

見出しの内容を実行する関数を探しています。

最終的に、すべての文字を解析するコードを記述し、別の文字列を作成してからDouble.parseDoubleを作成しました。StringIndexoutOfBoundsこれは例外を投げました。これは明らかに進むべき道ではありません。

コードのブロックはここにあります

int i = 0;
char c = q.charAt(i);
if (Character.isDigit(c)) {
    try {
        String h = "" + c;
        while (Character.isDigit(c) || c == '.') {
            if (i == (q.length() - 1)) if (Character.isDigit(q.charAt(i + 1)) || (q.charAt(i + 1) == '.')) {
                Log.i("CalcApps", "within while");
                h += q.charAt(i + 1);
            }
            i++;
            c = q.charAt(i);
        }
        result = Double.parseDouble(h);
    } catch (Exception e) {
        Log.i("MyApps", "Index is out of bounds");
    }
}
4

2 に答える 2

3

次のようなことを試してみてください。

public static void main(String[] args) {
        String str = "dsde1121zszs.15szs"; 
        Double d = Double.valueOf(str.replaceAll("[^0-9\\.]", ""));
        System.out.println(d);
    }
于 2012-07-24T09:51:57.337 に答える
0

DecimalFormatを使用し、パーサーの独自の実装を作成しないようにする必要があります。いくつかの例については、この質問を参照してください。

于 2012-07-24T09:49:59.550 に答える