提问人:Voyex 提问时间:4/4/2020 更新时间:4/4/2020 访问量:62
为什么我会收到 InputMismatchException with?
Why am I getting an InputMismatchException with?
问:
我在 java 中创建了一个 Scanner 来读取有关城市的数据文件。该文件的格式如下:
Abbotsford,2310,2
Adams,1967,1
Algoma,3167,2
在读取文件时,我在扫描每行上的最后一项时收到 InputMismatchException(此项必须是 int)。
public void fileScanner(File toScan) throws FileNotFoundException {
Scanner sc = new Scanner(toScan);
sc.useDelimiter(",");
System.out.println(sc.next());
System.out.println(sc.nextInt());
System.out.println(sc.nextInt());
有什么想法吗?我想这与我使用“,”分隔符有关。
答:
1赞
Trishul Singh Choudhary
4/4/2020
#1
您使用的分隔符是逗号(,)
系统查找下一个逗号,该逗号仅在 之后出现。因此,系统的输入看起来显然不是 Int ,而是一个 String,因此是 inputMisMatch。Adams
2 Adams
如果你使你的数据如下所示,你的代码会很好用。
Abbotsford,2310,2,
Adams,1967,1,
Algoma,3167,2,
我还看到没有循环来读取所有数据。您的代码将只读取第一行。
评论
0赞
Voyex
4/5/2020
我认为数据必须采用这种格式。该代码只是一个示例,用于显示我正在尝试执行的操作。在我的完整实现中,我使用了 while 循环来确定扫描仪是否有更多的输入。
3赞
backdoor
4/4/2020
#2
您只使用一个分隔符,即 但是您的文件包含或尝试使用多个分隔符。另外,使用循环来读取整个文件:-,
\r
\n
Scanner sc = new Scanner(toScan);
sc.useDelimiter(",|\\r\\n");
while (sc.hasNext()) {
System.out.println(sc.next());
System.out.println(sc.nextInt());
System.out.println(sc.nextInt());
}
输出:-
Abbotsford
2310
2
Adams
1967
1
Algoma
3167
2
评论