I declare this variable:
private String numCarteBancaireValide=String.valueOf(((Integer.parseInt(Config.NUM_CARTE_BANCAIRE_VALIDE) ) + (Integer.parseInt("0000000000000001"))));
Config.NUM_CARTE_BANCAIRE_VALIDE is a string.
After Execution, I receive this error message :
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)
Please, Can you give your advices ?
The
4111111111111111
(which most likely is the value ofConfig.NUM_CARTE_BANCAIRE_VALIDE
) overflows theInteger
type.Better try with:
or
Integer.parseInt
will attempt to parse an integer from aString
.Your
"4111111111111111"
String
does not represent an valid Java integer type, as its value would be> Integer.MAX_VALUE
.Use
Long.parseLong
instead.Use
Long.parseLong()
, as your parameter is too large for anInteger
. (Maximum for an integer is2147483647
)PS: using
Integer.parseInt("0000000000000001")
doesn't make much sense either, you could replace this with1
.The maximum value of integer is 2147483647. So you need to use
Long.parseLong
instead to parse 4111111111111111. Something like this:On a side note:
As Alex has commented, if this number is representing a credit card number then you can treat it like a
string
instead of changing tolong
as there is no arithmetic calculations involved with the credit card numbers.