【发布时间】:2013-11-08 21:28:14
【问题描述】:
对于我的任务,我正在尝试将整数序列读入数组并计算有关数组的一些内容。我被限制使用 InputStreamReader 和 BufferedReader 从文件中读取,并且 Integer.parseInt() 在第一行读取后抛出 NumberFormatException。
如果我通过键盘单独输入每个数字,一切正常,但如果我尝试直接从文件中读取,则根本不起作用。
这是目前为止的代码
int[] array = new int[20];
try {
int x, count = 0;
do{
x = Integer.parseInt((new BufferedReader(new InputStreamReader(System.in)).readLine()));
array[count] = x;
count++;
}
while (x != 0);
}
catch (IOException e){
System.out.println(e);
}
catch (NumberFormatException e){
System.out.println(e);
}
要测试的案例是
33
-55
-44
12312
2778
-3
-2
53211
-1
44
0
当我尝试复制/粘贴整个测试用例时,程序只读取第一行然后抛出 数字格式异常。为什么 readLine() 只读取第一个值而忽略其他所有值?s
【问题讨论】:
-
BufferedReader 实际上并没有抛出 NumberFormatException,它是同一行上的另一种方法。如果您进一步阅读堆栈跟踪(您尚未提供 - 请在未来涉及 Java 异常的问题中提供堆栈跟踪),您应该能够看到这一点。
-
啊,我看到你隐藏了堆栈跟踪,难怪你看不到它。永远不要这样做:
System.out.println(e)。相反,请e.printStackTrace()- 或者干脆完全摆脱捕获 - 它可能不需要。
标签: java