这种问题我遇到过两次不同的,一种是 String 转换为 int 型报错,另一种是 String 转换为 double 报错,其实是同一类型的错误,只是我运用的不同场景,忽略了本质。
第一种、错误提示信息如下:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.xnch.chaptor1.StringFormat.main(StringFormat.java:8)
下面是我模拟的一段代码:
public static void main(String[] args) {
String str = "1 ";
int result = Integer.parseInt(str);
System.out.println("结果为:" + result);
}
-
错误分析:错误关键字 NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有
For input string: "1 "
提示,这就说明想把String类型的 "1 " 转换成数字类型时出错了。 -
找到问题点:具体是哪个类的哪个方法的哪一行的错误了,看下面错误堆栈,找到错误的行数,这样就定位到了
int result = Integer.parseInt(str);
具体是 Integer.parseInt(numString) 时出的错, -
解决问题:这里比较明显是“1 ” 后面有个空格,解决办法很简单,改成
Integer.parseInt(numString.trim())
就可以了。
第二种、错误提示信息如下:
Exception in thread "main" java.lang.NumberFormatException: For input string: "Unrated"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.xnch.chaptor1.StringFormat.main(StringFormat.java:9)
- 错误分析:错误关键字 NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有
For input string: "Unrated "
提示,这就说明想把String类型的 “Unrated” 转换成数字类型时出错了,很明显这是将字符串转换为浮点型或者整型出错,谁都不会这么笨,直接将字符串拿来转换。
出现这个问题是因为我在拉取文件里面的数据,自然而然的以为那一列数据都是double类型的,没想到还有脏数据,没有及时清理,小伙伴们后面在做数据分析之类的一定要记得先清理数据,避免踩坑。 - 解决问题:清理掉字符串数据即可。
版权声明:程序员胖胖胖虎阿 发表于 2022年11月6日 上午3:32。
转载请注明:java.lang.NumberFormatException For input string 错误及解决办法 | 胖虎的工具箱-编程导航
转载请注明:java.lang.NumberFormatException For input string 错误及解决办法 | 胖虎的工具箱-编程导航
相关文章
暂无评论...