我的代码旨在循环浏览文件,然后添加,然后显示总计。目前,它正确处理错误,但是当它遇到不正确的数据(非整数)时,它只是给出了直到文本文件的那一行的总数。我想要的是它继续前进,因为前面的数据可能仍然是整数。我怎样才能做到这一点?不仅如此,但我对InputMismatchException的捕获并未显示适当的错误。
我的代码:
public class HandlingTheException {
public static void main(String[] args) {
int integerTotal = 0;
int i;
Scanner scan = null;
File integerFile = new File ("someintegers.txt");
try {
scan = new Scanner (integerFile);
System.out.println("File contents: " );
while (scan.hasNextInt()) {
i = scan.nextInt();
integerTotal += i;
System.out.println(i);
}
System.out.println("File total: " + integerTotal + ". ");
System.out.println("Finished. ");
scan.close();
}
catch (InputMismatchException e1) {
System.err.println("Incorrect data type within file. Use integer only." );
}
catch (FileNotFoundException e2) {
System.err.println(integerFile.getName()+" does not exist");
}
}
该文件的一个示例: 10 20 三十 40 50 六十< ---当它到达这一行时程序将停止。它给出了总数,直到这一点,但它可以继续包括70,80,90,100 ....如何? 70 80 90 100
答案 0 :(得分:0)
将错误导致代码放在try / catch块中,并在正确记录后吃掉异常。
while (scan.hasNextInt()) {
try {
i = scan.nextInt();
} catch (Exception e) {
i =0;
//logging if necessary
}
integerTotal += i;
System.out.println(i);
}
而不是Exception
,您可以捕捉更具体的NumberFormatException