Search code examples
javajava.util.scannerinputmismatchexception

Reading from file double value using Scanner - InputMismatchException?


I tried read from file double values and using Scanner with this aim.

It throws 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)

And I can't understand why this happen?

Code:

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);
    }
}

UPDATE:
I tried change double largest = in.nextDouble(); to double largest = 0;
But it get wrong input:

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

File content is like this:

89343455
46746846
56.78
55486411

How to solve this trouble?


Solution

  • I found solution - need to create File object and then feed it to scanner class:

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