在Java中转换整数字符串时出现NumberFormatException

在Java中转换整数字符串时出现NumberFormatException,java,Java,我声明这个变量: private String numCarteBancaireValide=String.valueOf(((Integer.parseInt(Config.NUM_CARTE_BANCAIRE_VALIDE) ) + (Integer.parseInt("0000000000000001")))); Config.NUM_CARTE_BANCAIRE_VALIDE is a string. 执行后,我收到以下错误消息: java.lang.NumberFormatExc

我声明这个变量:

private String numCarteBancaireValide=String.valueOf(((Integer.parseInt(Config.NUM_CARTE_BANCAIRE_VALIDE)   ) + (Integer.parseInt("0000000000000001"))));
Config.NUM_CARTE_BANCAIRE_VALIDE is a string.
执行后,我收到以下错误消息:

java.lang.NumberFormatException: For input string: "4111111111111111"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.parseInt(Integer.java:615)
请给出您的建议。

使用
Long.parseLong()
,因为您的参数对于
整数来说太大了。(整数的最大值为
2147483647


PS:使用
Integer.parseInt(“00000000000001”)
也没有多大意义,您可以用
1
替换
4111111111
(很可能是
Config.NUM\u CARTE\u BANCAIRE\u VALIDE
的值)溢出
Integer
类型

最好尝试以下方法:

//if you need a primitive
long value = Long.parseLong(Config.NUM_CARTE_BANCAIRE_VALIDE); 


Integer.parseInt
将尝试分析
字符串中的整数

您的
“4111111111”
字符串
不代表有效的Java整数类型,因为其值将是
>integer.MAX_值


改为使用
Long.parseLong

整数的最大值为2147483647。因此,您需要使用
Long.parseLong
来解析4111111。大概是这样的:

long l = Long.parseLong("4111111111111111");
旁注:


正如Alex所评论的,如果该数字代表信用卡号,那么您可以将其视为
字符串
,而不是更改为
long
,因为信用卡号不涉及算术计算。

信用卡号不是整数,可能不应该被视为整数;它们是字符串,@KhalidKsouri如果其中一个答案解决了您的问题,请单击绿色复选标记。
long l = Long.parseLong("4111111111111111");