.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
有人能指出我正确的方向吗?
答案 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]);