Skip to content
Advertisement

Doing sums with data read from file in Java

I am fairly new to Java and have come across an issue which I know should be fairly easy to resolve. However, I cannot figure out where I am going wrong and how I can go about solving this issue. As you can see from my code snippet below I am trying reading from a file using the classical FileReader and I have used a while loop to read the entire file. However, this works all well and good but I would like to multiply the read.nextint() with read.nextdouble() However when I try and multiply them where my Income is it throws an error message. Any solution would be great! Thanks.

    FileReader file = new FileReader(fileName);
    Scanner read = new Scanner(file);
        while (read.hasNext()) {
            System.out.print("Room Type: " + read.next());
            System.out.print(", Bookings: " + read.nextInt());
            System.out.print(", Room Price: " + read.nextDouble());
            System.out.println(", Income: " + read.nextDouble() * Double.valueOf(read.nextInt()));
            System.out.println(", Tax: " + TaxRate + "nn");
        }

This is the error message:

Room Type: Single, Bookings: 5, Room Price: 23.5Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at RoomTaxSystem.Room_Tax_System.main(Room_Tax_System.java:24)

This is the data I am trying to read from the file

Single

5

23.50

Double

3

27.50

Suite

2

50.00

Advertisement

Answer

FileReader file = new FileReader(fileName);
Scanner read = new Scanner(file);
    while (read.hasNext()) {
        System.out.print("Room Type: " + read.next());
        int bookings = read.nextInt();
        System.out.print(", Bookings: " + bookings);
        double price = read.nextDouble();
        System.out.print(", Room Price: " + price);
        System.out.println(", Income: " + bookings * price);
        System.out.println(", Tax: " + TaxRate + "nn");
    }
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement