将10000000000001转换为基5时出现Java NumberFormatException

将10000000000001转换为基5时出现Java NumberFormatException,java,numberformatexception,Java,Numberformatexception,我正在尝试使用Java将字符串“10000000000001”转换为base 5: Integer number=Integer.parseInt(“10000000000001”,5); 然而,我有一个数字形式的感觉。字符串被修剪,仅包含1和0。有人能解释一下我为什么会遇到这个异常吗?基数5中的数字10000000000001相当于基数10中的数字30517578126(您可以自己验证或使用) 但是,30517578126太大,无法放入int值。最大值为2147483647。这解释了您将获得

我正在尝试使用Java将字符串“10000000000001”转换为base 5:

Integer number=Integer.parseInt(“10000000000001”,5);


然而,我有一个数字形式的感觉。字符串被修剪,仅包含1和0。有人能解释一下我为什么会遇到这个异常吗?

基数5中的数字
10000000000001
相当于基数10中的数字
30517578126
(您可以自己验证或使用)

但是,
30517578126
太大,无法放入
int
值。最大值为
2147483647
。这解释了您将获得的异常-来自:

如果字符串不包含可解析的
int
,则引发
NumberFormatException

这里就是这样

您需要使用
长的

public static void main(String[] args) {
    long number = Long.parseLong("1000000000000001", 5);
    System.out.println(number); // prints "30517578126"
}
你可以用like

输出为

30517578126

注意:这是231-1
2147483647

@Tunaki-很有意义,实际上字符串是“10000000000001”,我要做的就是在基数5中找到这个字符串的表示形式。我可以这样做吗?不,它对于
int
来说太大了。视觉练习:尝试使用基数为2、3、4的代码,然后比较结果。当你达到5岁时,你就会明白为什么它会破裂。
30517578126