所以,在Java中我在命令参数中有一个很大的数字,比方说12345678910,我不能使用bigInteger,我已经做了:
String[] g = args[1].split("");
所以,我的字符串放在一个字符串数组中。但是,我不能使用:
int[] ginormintOne = new int[g.length];
for(int n = 0; n < g.length; n++) {
ginormintOne[n] = Integer.parseInt(g[n]);
}
它给了我这个:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Ginormint.main(Ginormint.java:67)
我认为我的数字对于int来说太大了。有关如何将其转换为大数组的任何想法吗?
答案 0 :(得分:5)
你正在分裂一个空字符串。例如,
"123 456".split("")
产生这个数组:
["" "1" "2" "3" " " "4" "5" "6"]
这是您的例外来源。
答案 1 :(得分:0)
使用Long.parseLong
代替Integer.parseInt
和long[]
代替Long.parseLong
。
但是说,NumberFormatException
表示失败是因为你传递的是一个空字符串。你确定你正确地拆分了字符串,还是拆分甚至是必要的? args
中的main
数组已经在空格上分割,假设args
来自哪里。
答案 2 :(得分:0)
来自args[1].split("")
的数组的第一个元素是一个空字符串,据我所知导致异常java.lang.NumberFormatException
,因为它无法转换为Integer