我有包含以下数据的文件
A,8,43
B,7,42,
C,9,34
我使用下面的代码来读取数据
Scanner input = new Scanner(new File("D:\\test.txt"));
input.useDelimiter(",|\n");
while(input.hasNext()) {
String name = input.next();
int age = input.nextInt();
int height = input.nextInt();
当我执行程序时,我收到 InputMisMatch 异常, 请指出错误所在。
最佳答案
在第二行末尾有 ,
和行分隔符(我假设 \n
),这意味着这两个分隔符之间有空元素。
所以在第三次迭代中
String name = input.next();
int age = input.nextInt();
int height = input.nextInt();
input.next();
正在消耗 ""
,这意味着 input.nextInt()
将尝试消耗 C
.
要解决此问题,您可以将分隔符设置为一个或多个逗号和行分隔符的组合,例如
input.useDelimiter("(,|\n)+");
要进一步改进您的代码,您可以使用 Java 8 中添加的 \\R
(或 \r|\n
)来代替 \n
> 在早期版本中)来处理所有行分隔符,因为目前您不将 \r
视为分隔符,因此可以将其视为有效标记。
所以更好的解决方案是使用
input.useDelimiter("(,|\\R)+"); //for readability
甚至
input.useDelimiter("[,\r\n]+");
关于java - 从文件中读取两个 Int 值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44606820/