Java 将字符串数组转换为大小数数组
我正在尝试将字符串[]转换为BigDecimal[],但得到了java.lang.NumberFormatException 这是我的密码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 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
包含无效字符串,那就没什么帮助了。