0

使用

 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

我不明白为什么它不会把它们当作双打......

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

4

2 回答 2

1

InputMismatchException是扫描器尝试将字符串解析为无法解析的格式的结果。例如,调用Double.parseDouble诸如“3.3 米”之类的字符串将引发 NumberFormatException。正如iccthedral 所添加的,即使是像“3.0”这样重要的字符串(注意空格)也会导致 NFE。

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

为确保您的扫描仪可以读取一个替身,请致电并仅在扫描仪有下一个替身时才Scanner#hasNextDouble()继续获取替身。

于 2012-09-20T17:08:03.183 回答
1

预先添加支票

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

为了确定失败的原因和确切位置。

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


于 2012-09-20T17:06:09.000 回答