将BigDecimal转换为Array中的String

时间:2013-12-29 15:11:53

标签: java arrays string bigdecimal

.toString()方法适用于BigDecimal,但是当我循环遍历数组并使用array[i]引用它时,我似乎无法使其工作。这是我的代码,其中 numb 是一个字符串变量:

for (int i = 0; i < b.length; i++) {
    if((b[i].getClass().toString().contains("String") || b[i].getClass().toString().contains("BigDecimal"))&& isNumeric((String)b[i]) && i != b.length-1){ 
        if(!caught){
            caught = true;
            startIndex = i; //where the number starts
            }
            numb+=b[i].toString();

错误信息:

 Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

有人能指出我正确的方向吗?

5 个答案:

答案 0 :(得分:3)

错误消息可能是由于这个演员:

(String)b[i]

将其替换为

b[i].toString()

答案 1 :(得分:2)

b[i]可以包含BigInteger类型。您正尝试使用显式强制转换将BigInteger类型转换为String。使用此语法无法做到这一点。相反,如果类型为BigInteger,您可以按以下方式进行转换:

BigInteger bigInt = new BigInteger("444");
String stringVal = bigInt.toString();

答案 2 :(得分:1)

由于BigDecimal不是String,您无法使用显式广播投放BigDecimal String

这取决于您的isNumeric方法的实施方式*但您必须这样做:

isNumeric(b[i].toPlainString())

*因为如果需要指数,toString()可以使用科学记数法。

答案 3 :(得分:1)

isNumeric((String)b[i])

将其更改为

isNumeric(b[i].toString())

您无法通过投射将Object转换为String

答案 4 :(得分:1)

你也可以尝试String.valueOf(b [i]);

相关问题