Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 将字符串数组转换为大小数数组_Java_Arrays - Fatal编程技术网

Java 将字符串数组转换为大小数数组

Java 将字符串数组转换为大小数数组,java,arrays,Java,Arrays,我正在尝试将字符串[]转换为BigDecimal[],但得到了java.lang.NumberFormatException 这是我的密码 BigDecimal montanttt[] = new BigDecimal[montantt.length]; for (int i = 0; i < montantt.length; i++) { montanttt[i] = new BigDecimal(montantt[i]);

我正在尝试将字符串[]转换为BigDecimal[],但得到了java.lang.NumberFormatException

这是我的密码

BigDecimal montanttt[] = new BigDecimal[montantt.length];
        for (int i = 0; i < montantt.length; i++) {
            montanttt[i] = new BigDecimal(montantt[i]);
            System.out.println(montanttt[i]);
        }
BigDecimal-montanttt[]=新的BigDecimal[montantt.length];
for(int i=0;i
这里是Java 8上的精简解决方案

Arrays.stream(montantt).map(s -> {
        try { 
            return new BigDecimal(s);
        } catch (NumberFormatException e) {
            return BigDecimal.ZERO;
        }
}).toArray(BigDecimal[]::new);
如果
String
无法转换为
BigDecimal
,您将获得
NumberFormatException
。但是如果抛出异常,您可以返回一些常量,例如
BigDecimal.ZERO



它可以很好地用于您的输入
[“0.50”、“0.20”]

您应该使用for循环中的try/catch检查异常:

for (int i = 0; i < montantt.length; i++) {
    try {
        montanttt[i] = new BigDecimal(montantt[i]);
        System.out.println(montanttt[i]);
    } catch (NumberFormatException e) {
        System.out.println("Exception while parsing: " + montantt[i]);
    }
}
for(int i=0;i
尝试清除所有不属于数字的字符,并在解析之前规范化小数点,如:

String normalized = montantt[i].replace(",", ".").replaceAll("[^-.0-9eE]", "");
BigDecimal d = new BigDecimal(normalized);
试试这个:

BigDecimal montanttt[] = new BigDecimal[montantt.length];
    for (int i = 0; i < montantt.length; i++) {
        try {
         montanttt[i] =BigDecimal.valueOf(Double.valueOf(montantt[i]))
        System.out.println(montanttt[i]);
    } catch (Exception e) {
      e.printStackTrace();
    }           
    }
BigDecimal-montanttt[]=新的BigDecimal[montantt.length];
for(int i=0;i
montantt的内容是什么?
String[]montantt=request.getParameterValues(“montant”)
request.getParameterValues(“montant”)的内容是什么?我想他指的是实际的字符串内容。例如['James','Harry','2'],请给变量起更好的名字。。现在很容易混淆
montantt
montantt
如果
montantt
包含无效字符串,那就没什么帮助了。