确定数字中数字的基本程序不适用于更高的数字?

我制作了一个小代码块,其目标是尝试将数字的所有数字存储到数组中。例如,数字“123”将存储为 {1,2,3}。一切似乎都运行良好,除非数字的长度大于10。是我的方法有问题吗?确切的错误消息是


线程“main” java.lang.NumberFormatException 中的异常:对于输入字符串:“1202020202020202020” at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.base/java.lang.Integer.parseInt(Integer.java:652) at java.base/java.lang.Integer.parseInt(Integer.java:770) at test.main(test.java:8)


public class test {


public static void main(String[] args){


    //This block of code parses the zipcode and stores each number it has into an array. It also fetches the length, which is used later.

    String input = args[0];       

    int length = input.length();

    int zipcode = Integer.parseInt(args[0]);

    int[] digits = new int[length];         

    for(int i = 0; i < length ; i++){ 

        digits[i] = zipcode % 10; 

        zipcode = zipcode /10;

    }


}

}


浮云间
浏览 98回答 1
1回答

慕斯王

您的代码将处理的最大数字是 Integer.MAX_VALUE,这是2147483647。除此之外,您正在尝试解析一个不适合整数的数字。使用Long会给你更多的空间。刚刚看到@user207421的评论,他/她是对的...你真的不需要把你的字符串存储为一个数值。如果您必须这样做,并且想要处理非常大的数字,则可以使用BigDecimal。另外,根据你说你想要的,我认为你的最终数组将按照你想要的顺序相反。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java