Java 为什么我会收到输入不匹配异常?
我用java创建了一个扫描器来读取有关城市的数据文件。文件的格式如下:Java 为什么我会收到输入不匹配异常?,java,file-io,java.util.scanner,Java,File Io,Java.util.scanner,我用java创建了一个扫描器来读取有关城市的数据文件。文件的格式如下: Abbotsford,2310,2 Adams,1967,1 Algoma,3167,2 在读取文件时,当扫描每行的最后一项时,我会得到一个InputMismatchException(该项必须是int) 你知道为什么吗?我想这与我使用的“,”分隔符有关。您使用的分隔符是逗号(,) 系统查找下一个逗号,该逗号仅出现在Adams之后。因此,系统的输入看起来像2 Adams,这显然不是Int,而是字符串,因此输入不匹配 如果您
Abbotsford,2310,2
Adams,1967,1
Algoma,3167,2
在读取文件时,当扫描每行的最后一项时,我会得到一个InputMismatchException(该项必须是int)
你知道为什么吗?我想这与我使用的“,”分隔符有关。您使用的分隔符是逗号(,) 系统查找下一个逗号,该逗号仅出现在
Adams
之后。因此,系统的输入看起来像2 Adams
,这显然不是Int,而是字符串,因此输入不匹配
如果您将您的数据设置为如下所示,那么您的代码将运行良好
Abbotsford,2310,2,
Adams,1967,1,
Algoma,3167,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
我希望数据必须是那种格式。这段代码只是一个示例,展示了我试图做的事情。在我的完整实现中,我使用了while循环来确定扫描仪是否有更多的输入。
Abbotsford
2310
2
Adams
1967
1
Algoma
3167
2