我声明了这个变量:
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)
拜托,你能提出建议吗?
答案 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
。