从.dat文件中读取错误时出错。 .dat文件设置如下:
<Name>/<age>
我使用/作为分隔符。 我试图从文件中读取以读取名称和年龄,但它出现了这个错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at Lab04a.input(Lab04a.java:26)
at Lab04a.main(Lab04a.java:18)
Java Result: 1
有问题的方法是:
public void input() {
try {
File dat = new File("Lab04a.dat");
Scanner sc = new Scanner(dat).useDelimiter("/");
String name = sc.next();
int age = sc.nextInt();
Lab.process(name, age);
}
catch(FileNotFoundException e) {
System.out.println("Missing or corrupted data file.");
System.exit(0);
}
}
给出错误的行是第26行和第18行,这些是行:
第18行:
Lab.input();
第26行:
int age = sc.nextInt();
第18行不会有任何错误,因为它只调用有问题的方法。 第26行是(我的最佳猜测)发生错误的地方。
答案 0 :(得分:0)
该行
int age = sc.nextInt();
如果下一个标记与整数正则表达式不匹配或超出范围,则可以为您提供InputMismatchException
答案 1 :(得分:0)
试试这个
Scanner sc = new Scanner(dat).useDelimiter("\\/");
修改强>
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
/**
* @author Davide
*/
public class test {
static Map map;
public static void main(String[] args) {
// init value
input();
}
public static void input() {
try {
File dat = new File("test.dat");
Scanner sc = new Scanner(dat).useDelimiter("\\/");
String name = sc.next();
int age = sc.nextInt();
System.out.println(name + " " + age);
}
catch(FileNotFoundException e) {
System.out.println("Missing or corrupted data file.");
System.exit(0);
}
}
}
dat文件
ciao/56
<强>更新强>
try {
// ...
} catch (InputMismatchException e) {
sc.next();
}