我希望将一串个位数整数转换为Integer
ArrayList,但遇到了一个非常奇怪的异常。这是示例代码:
Scanner test = new Scanner(System.in);
String[] temp = null;
String line = null;
ArrayList<Integer> artemp = new ArrayList<>();
while(test.hasNext()) {
line = test.next();
temp = line.split("");
for(int i = 0; i < temp.length; i++)
artemp.add(Integer.parseInt(temp[i]));
for(int i : artemp) System.out.println(i);
}
它基本上应该从标准输入读取整数字符串,将它们作为原语放入数组列表中,然后将它们打印出来。当然,这只是我缩小较大错误范围的一个小测试用例。
这引发的异常如下:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
据我所知,应该发生以下情况:
line
接受标准输入temp
填充每个单独的个位数值(split("") 在每个字符后拆分)- 每个数字(存储为 a
String
)被解析为 anint
并添加到artemp
- 打印出每个数字。
这里到底出了什么问题?temp
如果我使用以下代码打印出来:
for(String s : temp) System.out.println(s);
然后数字被成功打印(作为字符串),我没有多余的字符。究竟如何才能parseInt(temp[i])
应用于字符串""
?