当前位置: 首页 > 面试题库 >

Integer.parse(String str)java.lang.NumberFormatException:错误

傅皓君
2023-03-14
问题内容

我一直在获得数字格式的期望值,即使我正在修剪字符串并且它们不包含非数字字符也很奇怪,它适用于某些数字,而不适用于某些数字。以下是我得到数字格式异常的字符串的示例。另外,任何以0开头的字符串(例如“
0208405223”)都将返回208405223,那么应该不再有零了吗?

String n="3020857508";
Integer a = Integer.parseInt(n.trim());
System.out.println(a);

这是例外:

Exception in thread "main" java.lang.NumberFormatException: For input string: "3020857508"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.parseInt(Integer.java:615)
    at JavaBeans.Main.main(Main.java:15)

问题答案:

这是因为3020857508超过了Integer.MAX_VALUE。您应该使用long将字符串转换为数字。

java> String n="3020857508";
//=> java.lang.String n = "3020857508"
java> Integer a = Integer.parseInt(n.trim());
//=> java.lang.NumberFormatException: For input string: "3020857508"
java> Integer.MAX_VALUE
//=> java.lang.Integer res2 = 2147483647
java> Long a = Long.parseLong(n.trim());
//=>java.lang.Long a = 3020857508

上面是javarepl的输出。

如果使用的是JDK9或更高版本,则在jshell中可以看到相同的结果。

jshell> String n="3020857508"
n ==> "3020857508"

jshell> Integer a = Integer.parseInt(n.trim())
|  Exception java.lang.NumberFormatException: For input string: "3020857508"
|        at NumberFormatException.forInputString (NumberFormatException.java:65)
|        at Integer.parseInt (Integer.java:652)
|        at Integer.parseInt (Integer.java:770)
|        at (#2:1)

jshell> Integer.MAX_VALUE
$3 ==> 2147483647

jshell> Long a = Long.parseLong(n.trim());
a ==> 3020857508


 类似资料:
  • 问题内容: 我正在做一些计算,但无法将字符串解析为int甚至是float。我寻找解决方案,并且在某个必须有空字符串的地方读取了它,但是我使用 及其打印的值证明该字符串不为空。 这是 logcat java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.farrukh.bmi / com.example.farrukh.bmi.Main

  • 因此,当我试图在Eclipse中添加新的存储库位置时,似乎会出现此错误。但是,我确信URL和身份验证信息(用户名和密码)是有效的。错误如下所示, 当我使用作为URL时,就会发生这种情况。我知道我用替换了PC的名称,但当我使用PC的名称时,也会发生同样的错误。当我安装TortoiseSVN和VisualSVN-Server时,我没有进行任何自定义安装,所以在很大程度上,安装依赖于默认设置。在构建存储

  • 我正在进行一些计算,但无法将字符串解析为int或float。我搜索了解决方案,并在某个地方读到了它,其中肯定有一个空字符串,但我检查了我的editText,使用 和它的打印值证明字符串不是空的..我错过了什么? java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.farrukh.bmi/com.example.farr

  • 我遇到了从html向servlet提交数据的问题 消息为空 说明服务器遇到意外情况,无法完成请求。 例外情况 注意服务器日志中提供了根本原因的完整堆栈跟踪。

  • 本文向大家介绍详解java.lang.NumberFormatException错误及解决办法,包括了详解java.lang.NumberFormatException错误及解决办法的使用技巧和注意事项,需要的朋友参考一下 前言: 在做后台时用的jsp开发,在页面向controller传参时用String接收的参数,但是数据库实体中jies接收该参数时是int类型,做了一下强制转换,但是没有判断去

  • 以下链接中的代码:https://github.com/dheenupriya/Gpay 起先。。我登录,然后我得到主页.jsp我点击交易,我可以查看交易,点击主页按钮,我回到主页.jsp然后当我在主页.jsp中点击注销时,我移动到索引.jsp。现在我的问题是..当我点击返回时,我转到主页.jsp当我单击链接银行帐户.jsp时,我可以转到session_expired.jsp作为session==