我得到以下例外:
java.lang.NumberFormatException: For input string: "3693019260"
打电话
Integer.parseInt(s);
而且我不知道为什么会得到它。
s.replaceAll("[^0-9]", "")
那为什么我会得到这个例外?
根据我所做的一些调试,我看到数字在multmin
下沾,但我不知道这个变量做了什么以及我应该如何解释这个观察结果。
答案 0 :(得分:5)
虽然int
可能适合32位无符号整数,但看起来您正试图将其解析为有符号整数-
。签名只是意味着它使用2147483647
支持负值。
对于带符号的数字,名称空间的一半是保留的,因此您的号码必须符合2 ^ 32÷2-1 long
,而不仅仅是2 ^ 32。
最简单的解决方法是将值解析为int
而不是{{1}}。长数字是64位,并支持字符串中的更多数字。