4

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 ?

1
  • 1
    Credit Card numbers are not integers and probably should not be treated as such; they are strings, Commented May 12, 2015 at 12:50

4 Answers 4

4

Use Long.parseLong(), as your parameter is too large for an Integer. (Maximum for an integer is 2147483647)

PS: using Integer.parseInt("0000000000000001") doesn't make much sense either, you could replace this with 1.

Sign up to request clarification or add additional context in comments.

Comments

1

The 4111111111111111 (which most likely is the value of Config.NUM_CARTE_BANCAIRE_VALIDE) overflows the Integer type.

Better try with:

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

or

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

Comments

1

The maximum value of integer is 2147483647. So you need to use Long.parseLong instead to parse 4111111111111111. Something like this:

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

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 to long as there is no arithmetic calculations involved with the credit card numbers.

Comments

0

Integer.parseInt will attempt to parse an integer from a String.

Your "4111111111111111" String does not represent an valid Java integer type, as its value would be > Integer.MAX_VALUE.

Use Long.parseLong instead.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.