inputMismatchException Java读取从纯文本文件加倍

时间:2012-09-20 16:57:25

标签: java

使用

 double variable = inputFile.nextDouble();

给出了不匹配的错误,我无法弄清楚为什么......任何人都知道是什么了?

输入文件只是一堆双打,如5.0 ......

好的,这是代码片段

String fileName;
Scanner scanner = new Scanner(System.in);
System.out.println("\nEnter file name that contains the matrix and vector: ");
fileName = scanner.nextLine();
Scanner inputFile = new Scanner(fileName);


double a1 = inputFile.nextDouble();

输入文件是此格式的纯文本文档.txt

5.0 4.0 -3.0
4.0 2.0  5.0
6.0 5.0 -2.0
-13.0 4.0 12.0

我不明白为什么不把那些作为双打......

至于它期望文件的格式是什么...我想二进制?不是默认的吗?我没有在代码中指定......

2 个答案:

答案 0 :(得分:1)

事先添加支票

if (inputFile.hasNextDouble()) { 
 double variable = inputFile.nextDouble();
} else if (inputFile.hasNext()) {
 System.out.println("Not double at token " + inputFile.next());
}

以确定失败的原因和原因。

可能是您的分隔符不是" "并且您没有手动指定它。 要设置分隔符,请调用useDelimiter(...)函数之一。


答案 1 :(得分:1)

InputMismatchException是扫描程序尝试将字符串解析为无法解析的格式的结果。例如,在诸如“3.3米”之类的字符串上调用Double.parseDouble将抛出NumberFormatException。随着 iccthedral 的添加,即使是一个非常重要的字符串“3.0”(注意空白)也会产生NFE。

Scanner.nextDouble()中发生NumberFormatException时,NFE将被包装并在InputMismatchException中重新抛出,这是此处发生的事情。

要确保您的扫描仪能够读取双倍内容,请致电Scanner#hasNextDouble()并仅在扫描仪具有下一个双倍的情况下继续获取双