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

这种问题我遇到过两次不同的,一种是 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. 解决问题:清理掉字符串数据即可。
java.lang.NumberFormatException: For input string: "1"是一个数字格式异常的错误,它表示在将字符串转换为数字类型时出现问题。 这个错误的原因可能是字符串中包含了非法字符或者格式不正确。在这种情况下,字符串"1"无法转换为有效的数字。 要解决这个问题,你可以尝试以下几种方法: 1. 检查字符串中是否包含了除了数字以外的字符。如果有,你可以使用String类的方法去除非法字符,然后再进行转换。例如,使用`numString.replaceAll("[^0-9]", "")`来去除非数字字符。然后再使用`Integer.parseInt(numString)`将字符串转换为整数。 2. 检查字符串的格式是否正确。确保字符串只包含数字,并且没有多余的空格或其他特殊字符。如果有,可以使用`numString.trim()`去除首尾的空格。然后再进行转换。 总之,要解决java.lang.NumberFormatException: For input string: "1"这个问题,你需要确保字符串只包含有效的数字字符,并且格式正确。通过去除非法字符或者使用正确的转换方法,你应该能够成功将字符串转换为数字。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java.lang.NumberFormatException For inputstring 4294967295处理方法](https://download.csdn.net/download/huiwenjie168/3525579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java.lang.NumberFormatException: For input string: 错误解决办法](https://blog.csdn.net/weixin_43800761/article/details/106772233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值