当前位置:首页 > java知识学习_java技术文章 > 正文

forinputstring是什么意思与异常原因解决

浏览594+

一、for input string异常:是什么原因出现的

该问题是什么意思呢?用中文翻译过来就是输入字符格式转换出现了异常,这种异常问题多半是数据格式转换错误造成的,一般都是由于业务逻辑需要将字符串儿转换为整型,或者是将整数类型的数字转化为String类型的字符串儿时格式不能对应造成java程序抛出了异常,具体异常信息详见下图:

for input string异常详细信息截图

出现这种问题一般是我们的代码逻辑判断不严谨导致的,我们在数据库中查询数据的时候不能够确保数据库中的数据格式都与我们所期盼的相符,总会有一些值为空和格式不相符的数字出现,所以Java程序中应该对这些空数据进行判断。

转换的数据出现了空字符串儿、空白和null值是无法进行转换的,具体问题应该具体分析,空字符串和null值做if else非空条件判断,数字之间有空白就调用.trim()方法清除多余的空格,通常刚入行的新手车,或者是粗心大意的程序写作者经常会遇见这种异常。

二、异常原因案例解决与汇总

案例一:For input string: “1 ” 多余空格

新手朋友在测试Integer.parseInt()方法时,出现了 java.lang.NumberFormatException异常,控制台给出了错误信息如下:

格式转换案例代码

java.lang.NumberFormatException错误提示信息详情

根据上图相关的错误提示告诉我们第48行代码书写有问题,然后我们定位到测试代码的main方法中,发现第六行代码中定义的字符串格式数字后面多了两个空格。

找到了错误的原因所在,解决问题进来就相当容易了,我们就直接调用了javaSE的api中提供的去掉空格的trim方法,然后重新编译,运行了一下程序就一切正常了。

案例二:null空值和” “空字符串

我们公司中有一个线上正在运行的项目,刚刚上线,然后测试人员找到我编写的代码,拿测试结果拿给说有异常出现,当时我还吓了一跳呢,因为我们在本地已经测试过很多遍了,确实没有什么问题,测试人员说有bug我还不信,具体详见测试人员给出的错误信息:

测试人员的测试异常详细信息

测试人员给出到上图的异常信息明确显示了也是forinputstring数据格式转换出现的异常,我们拿到代码马上排查了一遍,确实没有找到任何什么问题。

然后我检查了一遍mysql数据库中的数据,才发现数据库中有一个空值,经过我们自己的断点调试,发现了导致出现异常的原因,就是这个null导致的。

然后又排查了了一遍代码,发现没有做不为空的的判断,所以出现了这种错误,具体代码如下:

未做非空判断的代码截图

Integer.parseint()这个方法就是将字符串转换为Int类型的整型数字,也就是说括号中传入的参数必须要符合整数类型的格式才对,如果你传入的是空值,或者是空字符串以及其他不符合整型类型的格式,他都不能正确转换,最终都会抛出forinputstring类型的转换异常

找到了这个问题的所在,我们在代码中就做了非空判断和非空字符串判断,结果程序恢复正常,项目也能够上生产环境正式上线了,正确的代码编写如下所示:

if(null!=xxx  && !xxx .equals(“”)){……….}

 

相关文章推荐

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

for input string是什么意思

解决问题:java.lang.NumberFormatException: For input string: "null&quot

java.lang.NumberFormatException: For input string: “undefined”

java.lang.NumberFormatException: For input string: ” “这二个问题怎么解决

java.lang.NumberFormatException 错误及解决办法

报错:For input string

For input string: “”错误解决方法