Я не могу получить правильную обработку для читателя и писателя в моем коде - PullRequest
0 голосов
/ 08 апреля 2020

Напишите программу, которая читает файл "tickets.txt", который содержит идентификаторы продаж, за которыми следует число билетов для несовершеннолетних, взрослых и пожилых людей. Программа рассчитывает стоимость билетов и записывает этот результат в файл "cost.txt. ", в котором будет указан идентификатор продажи, а также стоимость билетов.

tickets.txt

132456 ребенок 2 взрослый 1 старший 2

321654 взрослый 2 ребенок 1 старший 1

798456 старший 2 ребенок 2 взрослый 1


cost.txt

Продажа билетов с идентификатором 132456 имеет счет в размере 23,00

Билет продажа с идентификатором 321654 имеет счет на сумму 18,50

* 1017 долларов * Продажа билетов с идентификатором 798456 имеет счет на сумму 24,50
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.Scanner;

public class Cinema_Tickets_Costs {
    public static void main (String[]args) throws FileNotFoundException {

        DecimalFormat dollar = new DecimalFormat("#0.00");
        Scanner key = new Scanner(System.in);

        String filename, id;
        final double CHILD = 4.00, ADULT = 6.00 , SENIOR = 4.50;
        double tickets, costs, ticketChild, ticketAdult, ticketSenior, sum = 0.0;

        System.out.println("Enter the tickets file name:");
        filename = key.nextLine();
        File file = new File(filename);
        if(! file.exists())
        {
            System.out.println(filename + " does not exist");
            System.exit(1);
        }
        Scanner reader = new Scanner(file);
        System.out.println("Enter the costs file name:");
        filename = key.nextLine();
        PrintWriter writer = new PrintWriter(filename);

        while(reader.hasNext())
        {
            id = reader.next();
            ticketChild = reader.nextDouble();
            ticketAdult = reader.nextDouble();
            ticketSenior = reader.nextDouble();
            tickets = Double.parseDouble(reader.next());

            sum += ticketChild;
            sum += ticketAdult;
            sum += ticketSenior;

            if(tickets <= 23.00)
                costs = ticketChild * CHILD + ticketAdult * ADULT + ticketSenior * SENIOR;
            else if (tickets <= 18.50)
                costs = ticketAdult * ADULT + ticketChild * CHILD + ticketSenior * SENIOR;
            else
                costs = ticketSenior * SENIOR + ticketChild * CHILD + ticketAdult * ADULT;
                writer.println("Ticket sale with ID " + id + " has a bill of $" + costs);               
        }
         key.close();
         reader.close();
         writer.close();

    }

}
...