今天在敲代码测试的时候突然出现了cause: java.lang.numberformatexception: for input string:这样的错误,找了一个小时都没有找到,错误如下:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: java.lang.NumberFormatException: For input string: "北京市昌平区"
### The error may exist in com/itheima/mapper/StoreMapper.xml
### The error may involve com.itheima.mapper.StoreMapper.updateId
### The error occurred while executing an update
### Cause: java.lang.NumberFormatException: For input string: "北京市昌平区"
结果后来同学帮我看代码发现,我配置文件写错了,本来是应该修改的值不为null而且不是空字符串,结果我写成非空格了。导致错误。但是又一个问题出现了,就是之前上课的时候我也是写的空格,为什么就可以呢?
于是我翻了之前上课时候的代码,发现我当时用来测试的数据是"123456",也就是双引号中写的是数字,但是很奇怪啊,不管是"123456"还是"北京市昌平区",这都应该是字符串啊,怎么会造成这样呢?底层代码对于我而言有点难找,然后我就查CSDN,终于找到一篇帖子。
地址:(5条消息) 报错解决:java.lang.NumberFormatException: For input string:“********”_欢乐的八爪鱼的博客-CSDN博客
这篇帖子是一个数据处理过滤的帖子,前辈在刨源码的时候发现是parseInt方法中会限定10位,
出于好奇,我也去试了试:
我直接试了10位数:
没有问题,可以执行。
接着我试了11位:
还是可以。
不管我试了多长。。。。
abc也不行,感觉不是ASCII码表的关系:
总之,我暂时没有找到为什么会出现这样的问题,明天问下老师吧,或者有哪位大佬可以解答一下吗?
解决方法就是:判断null和非空字符串,如图下: