3

Stringaがを表すかどうかを判断しようとしていDoubleます。私は次のコードが:をスローすることを期待していますNumberFormatException

String s = "type1234";

try {
    Double val = Double.parseDouble(s);
} catch (NumberFormatException e) {
    // Handle exception
    e.printStackTrace();
}

代わりに、でval終わりますInfinity。私は標準のJVMでコードを実行しましたが、実際にスローされますNumberFormatException

Androidが先頭の文字「typ」を無視してe^1234として解析しているようです。これはDouble「」の範囲外です。

これは予想される動作ですか?Stringもしそうなら、aがとして解析できるかどうかを判断するためのより信頼できる方法は何Doubleですか?

4

2 に答える 2

2

フレームワークを信頼していない場合は、正規表現を使用して自分自身を検証してください。これを行う 1 つの方法の例を次に示します。

    // You can get much fancier than this to handle all cases, but this should handle most
    String regexDouble = "^-?\\d*(\\.\\d+)?$";
    boolean isDouble = val.matches(regexDouble);
于 2012-10-26T22:02:34.220 に答える
1

JavaでStringをDoubleに解析できるかどうかを確認する最速の方法

この投稿の答えはアンドロイドで機能します。ICSでテストしました。

于 2012-10-26T22:13:55.810 に答える