java数值字符转Integer报错Exception in thread "main" java.lang.NumberFormatException: For input string: "12

很神奇的,明明就是数字啊,为什么就是要要报错呢

Exception in thread "main" java.lang.NumberFormatException: For input string: "12"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at com.simple.Test.main(Test.java:18)

我也是找了研究了两个多小时,各种方法测试,在出错代码的上一行加一个写死的数字字符并转换,不报错

然后突然灵光一闪,为什么不把它转换程字符数组看一下呢

然后就转换成字符数组,断点看了一下,很神奇,第一个字符什么鬼,换行?空的?空格?好像都不是

怀疑是空格,用trim()方法去空格,不行,然后想怎么样子能知道它是个什么字符呢

然后想到Unicode编码,把它弄成Unicode编码瞅瞅,然后就尝试写一下

结果是这样的

feff  ???这是啥?为什么会有这个,为了知道它具体值啥,就搜索了Unicode在线转换网站http://www.jsons.cn/unicode/转换了,可是啥也没有,不开心,什么鬼,啥也没有,replace方法也用不了,怎么才能去掉呢,难道这个就没有任何办法了

然后想了一下,正则表达式是不是可以匹配Unicode编码,然后尝试了一下replaceAll("\ufeff"),竟然可以,真的是把我给高兴的啊,难以用语言形容。

然后下班回家之后想在现问题,按照公司的操作步骤一步一步来,什么鬼,怎么可能,为啥重现不了,这bug还认电脑???这么神奇???

直到我找到了这篇博客https://blog.csdn.net/weixin_30868855/article/details/101523210,utf-8 bom编码是什么鬼???

然后我就在电脑上把新建的那个txt文件用记事本打开,然后另存为,改编码格式

还真有一个编码  带有BOM的UTF-8  的编码???(自带黑人问号)

好吧,然后改了一下编码格式,重新运行了一下,嗯,完美的重现了那个bug,还是印证那句话 “没有概率出现的bug,只要条件满足,所有概率出现的bug都是必然出现的” 

嗯?结束了???

重要的是解决方法,有时候看起来一样的可能还真的不一样,要想办法把不一样的地方找出来(找不同?)
比如看起来一样的字符串运行起来结果就是不同,就可以把两个看起来一样的字符串转换为字符数组,也许真的不一样呢

有空加个群(517413713)讨论讨论您遇到的奇葩问题呗,解决了就分享一下是怎么解决的呗,等您哦

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]和引用[2]提供了关于Java中的NumberFormatException错误的解决办法。这个错误通常发生在将字符换为数字类型时,字符串的格式不符合数字的要求。具体来说,当字符串包含非数字字符或者格式不正确时,就会抛出NumberFormatException异常。 针对你提供的错误信息"Exception in thread "main" java.lang.NumberFormatException: For input string: "."",这个错误是因为你尝试将一个只包含一个点号的字符串"."换为数字类型时出错了。 解决这个问题的方法是确保你要换的字符串是一个有效的数字格式。你可以使用try-catch语句来捕获NumberFormatException异常,并在catch块中处理错误情况。例如,你可以输出一个错误提示信息或者给用户一个合适的反馈。 以下是一个示例代码,演示了如何处理NumberFormatException错误: ```java public class NumberFormatExceptionExample { public static void main(String[] args) { String input = "."; try { int number = Integer.parseInt(input); System.out.println("换后的数字为: " + number); } catch (NumberFormatException e) { System.out.println("输入的字符串无法换为数字: " + input); // 其他处理错误的逻辑 } } } ``` 在上面的代码中,我们尝试将字符串"."换为整数类型。由于这个字符串不是一个有效的数字格式,所以会抛出NumberFormatException异常。在catch块中,我们输出了一个错误提示信息,告诉用户输入的字符串无法换为数字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值