【问题标题】:java.lang.NumberFormatException: For input stringjava.lang.NumberFormatException:对于输入字符串
【发布时间】:2012-12-05 18:56:00
【问题描述】:

eclipse 告诉那个 lang 我找不到解决办法

线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“2463025552” 在 java.lang.NumberFormatException.forInputString(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 Main.main(Main.java:31)

String s2[]=s.split("\\,");
Records rec=new Records();
rec.setName(s1[0]);
rec.setAddres(s2[0]);

phone  = Integer.parseInt( s2[1].trim() );
System.out.println(phone);

我以这种格式从文件中读取名称-地址、电话和广告在 arraylist 中放入电话我有问题

【问题讨论】:

    标签: java


    【解决方案1】:

    如果传递的字符串不是整数的有效表示,Integer.parseInt 会抛出 NumberFormatException。在这里,您尝试传递 2463025552,它超出整数范围

    使用 long 代替

    long phone = Long.parseLong(s2[1].trim() )
    

    【讨论】:

      【解决方案2】:

      基本的一点是,我们不需要电话号码作为加法、减法等算术计算的一部分。因此我们可以安全地将其视为字符串。

      【讨论】:

        【解决方案3】:

        Integer.parseInt( s2[1].trim() ); 这是你的问题。所以,把你的解析Integer改成Long

        【讨论】:

        • 我从 Integer 更改为 long 并且完美运行。非常感谢您的帮助。
        【解决方案4】:

        将数据类型更改为 long 或 bigint。你的字符串太长了,这就是为什么它有异常..

        【讨论】:

          【解决方案5】:

          带符号的 32 位整数最多只能读取 2^31。您必须使用更大的数据类型。 long 会让你达到 2^63。

          【讨论】:

            【解决方案6】:

            真正的问题是电话号码不是整数。这是一个String。您不应该将其存储为数字,原因与您现在遇到的问题类似。这同样适用于邮政编码、运动队的球衣号码以及许多其他“假”号码。

            【讨论】:

            • +1 给 Tom G,使用 Long 或其他数字类型可能会在未来引起问题。
            • 这是正确的回答。如果电话号码是 000-0001 怎么办。您真的要将其存储为 1 吗?你会向用户展示什么?
            • +1 汤姆,同意……把它变成一个字符串比长字符串好得多……可悲的是,我在回答时很难理解:P,
            • 我将 int 变量转换为 String ?
            【解决方案7】:
            2463025552 
            

            超出了 int 数据类型的范围,请尝试给出较小的数字。还要检查它是否是正确的数字格式(比如没有空格等)

            【讨论】:

            • 这是一个给定的电话号码,我们不能真正改变它,所以它适合 int。
            猜你喜欢
            • 2013-09-04
            • 1970-01-01
            • 1970-01-01
            • 2017-09-18
            • 2013-08-06
            • 2013-12-02
            相关资源
            最近更新 更多