java.math.BigDecimal cannot be cast to java.lang.Integer说类型不能转换,求解释!

第七十八行报错,debug说list.get(i).get("goods_amout")不能转化为integer类型... 第七十八行报错,debug说list.get(i).get("goods_amout")不能转化为integer类型 展开
 我来答
Benbengbet
2018-03-31 · TA获得超过1.2万个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:6.5万
展开全部

将其改为:

classroom.ClassroomBuilding = int.Parse(buildnum)
classroom.ClassroomStep = int.Parse(floor)

隐试转换说明:

1.两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换

2.两个参数都是字符串,会按照字符串来比较,不做类型转换

3.两个参数都是整数,按照整数来比较,不做类型转换

4.十六进制的值和非数字做比较时,会被当做二进制串

5.有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp

6.有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转换为 decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较

7.所有其他情况下,两个参数都会被转换为浮点数再进行比较

所以,下面的几个sql语句有相同的效果:

select * from convert_test where areacode=0001 and period>='20170511' and period<='20170511'; 

select * from convert_test where areacode=1 and period>='20170511' and period<='20170511'; 

select * from convert_test where areacode=0001.0 and period>='20170511' and period<='20170511'; 

select * from convert_test where areacode=1.0 and period>='20170511' and period<='20170511';

234369425
推荐于2018-02-23 · TA获得超过814个赞
知道小有建树答主
回答量:433
采纳率:0%
帮助的人:189万
展开全部
Object不能直接转化成Integer
你首先需要把它转化成String
list.get(i).toString();
再使用
Integer.valueOf(list.get(i).toString());
有很多转化都是使用String做中继的。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我就是来试试Ct7fa
2013-04-09
知道答主
回答量:10
采纳率:0%
帮助的人:6.1万
展开全部
曾经在一个视频上看到,说BigInteger类的处理时按照字符串的处理方式来进行的,直接的用强制类型转换时不行的,但Integer类可以接string类型,可以使用一个Integer密名实例来接BigInteger类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大大卷和真知棒
2013-04-09 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:64.3万
展开全部
Integer和BigDecimal都是封装类,你用(Integer)这种强制转换肯定是不行的,强制转换只能转换包含继承关系的类或基本类型数据。
BigDecimal d = new BigDecimal(1.2);
Integer i= new Integer(d.intValue());
这样转吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
席宏阔U6
2013-04-09 · TA获得超过686个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:216万
展开全部
Integer不是基本类型,是int的包装类,无法把包装当做基本类型来用。

比如,char a = 'c'; int b = (Integer)a; 这样也是回报cannot cast错误的。必须是(int)a,用基本类型才能转。这是第一个问题。

第二个问题 你的list.get(i).get("goods_amout")得到的应该是BigDecimal类型的,这个类型,不能用基本类型强转的。举个简单的例子,string a = "c"; int b = (int)a; 可以这样吗?

要转化这个,用intValue(),也就是:
list.get(i).get("goods_amout").intValue() 这样得到的就是个int 的值了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式