在Java中转换Integer String时的NumberFormatException

时间:2015-05-12 12:47:41

标签: 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.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)

拜托,你能提出建议吗?

4 个答案:

答案 0 :(得分:4)

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

PS:使用Integer.parseInt("0000000000000001")也没有多大意义,您可以将其替换为1

答案 1 :(得分:1)

4111111111111111(很可能是Config.NUM_CARTE_BANCAIRE_VALIDE的值)溢出Integer类型。

最好尝试:

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

//if you need a wrapper
Long value = Long.valueOf(Config.NUM_CARTE_BANCAIRE_VALIDE); 

答案 2 :(得分:1)

整数的最大值是2147483647.所以你需要使用Long.parseLong来解析4111111111111111.这样的事情:

long l = Long.parseLong("4111111111111111");

旁注:

正如Alex所评论的那样,如果此号码代表信用卡号,那么您可以将其视为string,而不是更改为long,因为信用卡号码不涉及算术计算

答案 3 :(得分:0)

Integer.parseInt将尝试解析String中的整数。

您的"4111111111111111" String不代表有效的Java整数类型,因为其值为> Integer.MAX_VALUE

改为使用Long.parseLong