java.lang.NumberFormatException For input string 错误及解决办法

  • Post author:
  • Post category:java


这种问题我遇到过两次不同的,一种是 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);
			
	}

  1. 错误分析

    :错误关键字 NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有

    For input string: "1 "

    提示,这就说明想把String类型的 “1 ” 转换成数字类型时出错了。


  2. 找到问题点

    :具体是哪个类的哪个方法的哪一行的错误了,看下面错误堆栈,找到错误的行数,这样就定位到了

    int result = Integer.parseInt(str);

    具体是 Integer.parseInt(numString) 时出的错,


  3. 解决问题

    :这里比较明显是“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)

  1. 错误分析

    :错误关键字 NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有

    For input string: "Unrated "

    提示,这就说明想把String类型的 “Unrated” 转换成数字类型时出错了,很明显这是将字符串转换为浮点型或者整型出错,谁都不会这么笨,直接将字符串拿来转换。

    在这里插入图片描述

    出现这个问题是因为我在拉取文件里面的数据,自然而然的以为那一列数据都是double类型的,没想到还有脏数据,没有及时清理,

    小伙伴们后面在做数据分析之类的一定要记得先清理数据,避免踩坑。

  2. 解决问题

    :清理掉字符串数据即可。



版权声明:本文为web18484626332原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。