NumberFormatException when converting Integer String in Java

前端 未结 4 1575
轻奢々
轻奢々 2021-01-19 13:58

I declare this variable:

private String numCarteBancaireValide=String.valueOf(((Integer.parseInt(Config.NUM_CARTE_BANCAIRE_VALIDE)   ) + (Integer.parseInt(\"         


        
相关标签:
4条回答
  • 2021-01-19 14:33

    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.

    0 讨论(0)
  • 2021-01-19 14:34

    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.

    0 讨论(0)
  • 2021-01-19 14:38

    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.

    0 讨论(0)
  • 2021-01-19 14:47

    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); 
    
    0 讨论(0)
提交回复
热议问题