java - 使用扫描仪读取文件 double 值 - InputMismatchException?

标签 java java.util.scanner inputmismatchexception

我尝试从文件双值中读取并使用 Scanner 来实现此目的。

它抛出InputMismatchException:

"input.txt"  java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)

我不明白为什么会发生这种情况?

代码:

public class Largest
{
    public static void main(String[] args)
    throws FileNotFoundException
    {
        String filename = "input.txt"; 
        Scanner in = new Scanner(filename);

        double largest = in.nextDouble();
        while (in.hasNextDouble())
        {
            double input = in.nextDouble();
            if (input > largest)
            {
                largest = input;
            }
        }
        in.close();
        System.out.println("Largest value: " + largest);
    }
}

更新:
我尝试将 doublelargest = in.nextDouble(); 更改为 doublelargest = 0;
但它输入错误:

filename     Actual              Expected
-------------------------------------------------------------
"input.txt"  Largest value: 0.0  Largest value: 1.343239923E9
"input2.txt" Largest value: 0.0  Largest value: 40.1   

文件内容是这样的:

89343455
46746846
56.78
55486411

如何解决这个问题?

最佳答案

我找到了解决方案 - 需要创建 File 对象,然后将其提供给扫描仪类:

String filename = "input.txt"; 
File newFile = new File(filename);
Scanner in = new Scanner(newFile);

关于java - 使用扫描仪读取文件 double 值 - InputMismatchException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407370/

相关文章:

java - Webapp java同步对象获取

Java扫描仪检测空行?

java - 字母扫描仪错误

java - 是否可以从两个不同的方法捕获具有相同异常类型的两个捕获?

java - CompletableFuture 异常处理 runAsync & thenRun

java - 为什么 readLine() 没有阻塞?

java - 我应该扩展 ArrayList (is-a) 还是应该将其作为成员包含 (has-a)?

java - 将用户的字符串输入限制为字母和数字值

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 从文件读取 double 时输入不匹配