如何在没有NumberFormatException的情况下将String转换为long?

时间:2017-09-26 15:14:28

标签: java numberformatexception

我想附加这些长变量,所以我先把它们变成了字符串。当我将它们返回到long时会抛出NumberFormatException。

disable-output-escaping="yes"

1 个答案:

答案 0 :(得分:3)

long BLZ = 12345678l;
long KNr = 1234567890l;
String landCode = "1314";
System.out.println(Long.MAX_VALUE);
System.out.println(String.valueOf(BLZ) + String.valueOf(KNr) + landCode + "00"); 

导致输出

  

9223372036854775807

     

123456781234567890131400

您尝试解析的数字大于long可以处理的数字。

编辑:你问过如何解决你的问题。在你的问题的评论中,有一个理论是你想要计算IBAN的校验和。您可以使用java.math.BigInteger

来实现
System.out.println(Long.MAX_VALUE);
long BLZ = 12345678l;
long KNr = 1234567890l;
String landCode = "1314";
String val = String.valueOf(BLZ) + String.valueOf(KNr) + landCode + "00";
System.out.println(val); 
System.out.println(BigInteger.valueOf(98).subtract(new BigInteger(val).mod(BigInteger.valueOf(97))));

这导致以下输出:

  

9223372036854775807

     

123456781234567890131400

     

87

或者您可以查看IBAN Documentation(它的德语,但我认为这不应该是您的问题;-)在第4章中有一个计算方法的说明校验和,如果你受限制(像这里)。您仍然需要longs才能实现这一点,因为9位数字可能会超出int的范围。