电话号码上有ParseInt NumberFormatException

时间:2012-07-31 22:12:11

标签: java string parsing integer

我在尝试解析电话号码时收到以下错误," 5554567899"

java.lang.NumberFormatException: For input string: "5554567899"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at java.lang.Integer.parseInt(Integer.java:527)
...

显然,电话号码可以解析。我甚至引用了this question,字节码结果是

53,53,53,52,53,54,55,56,57,57,

因此字符串中没有不可见的字符。我很难过,有人可以帮忙吗?

以下是引发错误的代码部分,供参考:

String fullNumber = null;
        for(Phone phone : party.getPhones()) {
            if(phone != null && !phone.getDialNumber().isEmpty()) {
                if(!phone.getAreaCode().isEmpty()) {
                    fullNumber = phone.getAreaCode();
                }
                fullNumber += phone.getDialNumber();
                if(phone1 == null || phone1.equals(0)) {
                    LOGGER.debug(displayCharValues(fullNumber));
                    phone1 = Integer.parseInt(fullNumber);
                }
         }

phone1属于Java.lang.Integer类型。

4 个答案:

答案 0 :(得分:6)

该值超出了int范围。将其解析为长变量。

简单测试:

int i = 5554567899;

是编译时错误:“int类型的文字5554567899超出范围”

答案 1 :(得分:1)

5554567899作为一个数字太大而不适合int。请改为Long.parseLong

答案 2 :(得分:1)

5554567899超过Integer.MAX_VALUE(2147483647)。请改用LongBigInteger

BigInteger bigNumber = new BigInteger("5554567899");

答案 3 :(得分:1)

真的不应该将电话号码视为一个数字,而是作为一个字符串或可能作为您自己定义的数据类型,打破国家代码,区号,交换等。

如果要验证它只包含数字或数字加上一些标准的电话号码分隔符,可以通过正则表达式来完成。

我们将其称为电话号码,它是一个数字字符串,但由于用法不是用于数值计算,因此最好不要尝试将其视为数字。

“社会安全号码”也是如此。