我正在尝试创建一个程序,该程序从文件中读取整数列表,并将它们全部添加到一起并显示给用户。我可以让这个程序正常工作,但我想要做的是如果文件中存在无效条目(例如,一个单词或任何不是数字的东西),它将提醒用户并忽略数据无效并跳至下一个可用号码。到目前为止,这是我的代码:
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
public class IntegerReadIn {
public static void main(String[] args) {
int sum = 0;
try {
File myFile = new File("IntegerReadIn.txt");
Scanner scan = new Scanner(myFile);
while (scan.hasNextInt()) {
sum = sum + scan.nextInt();
}
System.out.println("Total = " + sum);
scan.close();
} catch (FileNotFoundException e) {
System.err.println("No such file name");
} catch (InputMismatchException e) {
System.err.println("Invalid entry found - integers only.");
}
}
}
答案 0 :(得分:0)
首先使用 nextLine()来读取整行。之后使用 Integer.parseInt()方法验证整数输入。
Scanner scan = new Scanner(myFile);
String s = scan.nextLine();
try{
Integer.parseInt(s);
}
catch(NumberFormatException ex){
System.out.println("Error....");
}
答案 1 :(得分:0)
也许您应该只为hasNextInt()
haxNext()
这样你就可以明确地检查你是否得到一个整数(因此你可以向用户提供反馈)
while (scan.hasNext()) {
if (scan.hasNextInt()) {
sum = sum + scan.nextInt();
} else {
System.out.println("Invalid Entry: " + scan.next());
}
}
考虑到这一点,您将不需要InputMismatchException