Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复DecimalFormat.parse()在android7之前版本和android7中的不同行为导致的字符串验证问题?_Java_Android_Android 7.0 Nougat - Fatal编程技术网

Java 如何修复DecimalFormat.parse()在android7之前版本和android7中的不同行为导致的字符串验证问题?

Java 如何修复DecimalFormat.parse()在android7之前版本和android7中的不同行为导致的字符串验证问题?,java,android,android-7.0-nougat,Java,Android,Android 7.0 Nougat,在android 7之前的版本中,当您将字符串“123 45”作为“value”传递给上述方法时,它会抛出parse异常,因为DecimalFormat.parse()为“123 45”返回null。在Android 7中,该方法返回“12345”,因为DecimalFormat.parse()返回“12345” 上述行为的原因是由于android团队进行了以下迁移。 我正在寻找可以解析给定字符串的十进制格式的替代方案,该解决方案也应该考虑现场信息。Double.parseDouble对我有效

在android 7之前的版本中,当您将字符串“123 45”作为“value”传递给上述方法时,它会抛出parse异常,因为DecimalFormat.parse()为“123 45”返回null。在Android 7中,该方法返回“12345”,因为DecimalFormat.parse()返回“12345”

上述行为的原因是由于android团队进行了以下迁移。


我正在寻找可以解析给定字符串的十进制格式的替代方案,该解决方案也应该考虑现场信息。Double.parseDouble对我有效,但它不考虑语言环境。

我不确定你是否有效,但如果你在解析金钱,那么就利用
Joda Money
库我不确定你是否有效,但如果你在解析金钱,那么就利用
Joda Money
    private static double javaNumberFormat(String value, Locale locale) throws ParseException {
            ParsePosition parsePosition = new ParsePosition(0);
            DecimalFormat numFormat = (java.text.DecimalFormat) NumberFormat.getNumberInstance(locale);
            Number number = numFormat.parse(value, parsePosition);

            if(number == null || parsePosition.getIndex() != value.length())
                throw new ParseException("Invalid input", parsePosition.getIndex());

            return number.doubleValue();
        }