Java for input string:是什么原因出现的

关于Java中遇到的“For input string: “””这个问题的解决方案

       相信大家在平常Java开发时经常会遇到“For input String”这个烦人的问题,特别是在项目上线解决紧急bug时,遇到这个问题的开发新手们肯定是会去百度一番,这样是可以,当然也很快就就解决了问题,但如果你不先结合日志和代码思考一下,而是纯粹为了解决问题的话,估计下次你遇到这样的问题,同样也要上百度,这样就耽误了你宝贵的开发时间了。

       先不说太多废话,直接进入主题~ 首先自己将开发好的程序扔给测试人员,本来以为程序没什么问题就可以上线了,谁知测试那边直接一个日志截图发过来,那时还真吓了我一跳,截图如下图片所示:

       从上图可以清晰看出完全就是数字格式化出错了,For input String:"“从字面上理解就是你(input)输入或你传入的值为”",字符串类型在转化为其它数据类型时就报错了!于是好奇的我结合日志排查了一下代码,发现果然是这种情况,看下图:

       日志到这个红色框这一行代码就把报错了,很明显可以看出这个cardType这个变量的值本来为"“的(字符串类型),但在使用Integer.parseInt()函数将该变量的值由字符串类型String转为整型int时就报错了,这说明空值”"是不能转为int类型的,只有包含数字之类的String类型才可以转(如:“1234”等等),因此就导致了日志上的数字格式化的问题。

       其实为了避免这种情况出现,我们可以对该变量的值进行非空处理,比如加个如下的代码就可以稍微避免下以上的报错了:

if(cardType !=null && !cardType .equals("")){
.............
.............
}

       其实出现这样的问题,说到底是我们踩的坑还是太少,掌握的Java基础不牢固,经验不够丰富,所以我们每天有空的话都要去巩固自己的Java基础,多积累些开发的经验,让自己少犯这些低级的错误!