Advertisement
soyl

Untitled

Sep 28th, 2023
669
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.63 KB | None | 0 0
  1.  
  2. import java.time.Duration;
  3. import java.time.LocalDateTime;
  4. import java.time.ZoneId;
  5. import java.time.ZonedDateTime;
  6. import java.time.format.DateTimeFormatter;
  7.  
  8. class Practicum {
  9.     // Задайте форматирование для времени и даты в формате часы:минуты день.месяц.год
  10.     // Пример - 12:15 02.11.21
  11.     public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm dd.MM.yy");
  12.     // Задайте форматирование для времени в формате часы:минуты
  13.     public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
  14.  
  15.     public static void main(String[] args) {
  16.         System.out.println("Тест №1:");
  17.         printFlightInformation(
  18.                 "12:15 02.11.21",
  19.                 "VKO",
  20.                 "LED",
  21.                 30,
  22.                 1,
  23.                 55
  24.         );
  25.  
  26.         System.out.println("\nТест №2:");
  27.         printFlightInformation(
  28.                 "14:00 03.10.21",
  29.                 "SVX",
  30.                 "VVO",
  31.                 0,
  32.                 9,
  33.                 5
  34.         );
  35.  
  36.         System.out.println("\nТест №3:");
  37.         printFlightInformation(
  38.                 "06:00 12.12.21",
  39.                 "DME",
  40.                 "VVO",
  41.                 0,
  42.                 12,
  43.                 0
  44.         );
  45.  
  46.         System.out.println("\nТест №4:");
  47.         printFlightInformation(
  48.                 "23:00 29.03.22",
  49.                 "LED",
  50.                 "SVX",
  51.                 0,
  52.                 2,
  53.                 55
  54.         );
  55.  
  56.  
  57.     }
  58.  
  59.     private static void printFlightInformation(
  60.             String formattedDepartureTime,
  61.             String departureAirportCode,
  62.             String arrivalAirportCode,
  63.             int delay,
  64.             int flightDurationHours,
  65.             int flightDurationMinutes
  66.     ) {
  67.         Airport departureAirport;
  68.         Airport arrivalAirport;
  69.         // С помощью класса AirportDatabase получите данные об аэропортах вылета и посадки.
  70.         // При получении исключения выведите сообщение исключения.
  71.         try {
  72.             AirportDatabase.getAirportByCode(arrivalAirportCode);
  73.             // исполняемый код
  74.         } catch (IllegalStateException e) {
  75.             System.out.println(e.getMessage());
  76.             return;
  77.         }
  78.  
  79.         // Создайте экземпляр ZonedDateTime с помощью formattedDepartureTime и зоны аэропорта вылета.
  80.         ZonedDateTime departure = ZonedDateTime.parse(formattedDepartureTime + departureAirport);
  81.  
  82.         // Выведите информацию о том, между какими городами будет перелёт.
  83.         System.out.println("Ваш билет на рейс " + departureAirport.getCity() + " - " + arrivalAirport.getCity() + ": ");
  84.  
  85.         // Найдите продолжительность полёта.
  86.         Duration flightDuration = Duration.ofHours(flightDurationHours).plusMinutes(flightDurationMinutes);
  87.         // Найдите время прибытия с учётом зоны прилёта.
  88.         ZonedDateTime arrival =
  89.  
  90.         // Заполните данные для передачи в метод печати билета.
  91.         // Город вылета
  92.  
  93.         String departureCity = departureAirport.getCity();
  94.         // Город прилёта
  95.         String arrivalCity = arrivalAirport.getCity();
  96.         // Отформатированное время прилёта
  97.         String formattedArrivalTime =
  98.         // Только время вылета
  99.         String departureTimeOnly = ...
  100.  
  101.         printTicket(
  102.                 formattedDepartureTime,
  103.                 departureAirportCode,
  104.                 arrivalAirportCode,
  105.                 departureCity,
  106.                 arrivalCity,
  107.                 formattedArrivalTime,
  108.                 departureTimeOnly
  109.         );
  110.  
  111.         // Добавьте проверку на случай задержки.
  112.         if (delay > 0) {
  113.             // Определите продолжительность задержки.
  114.             Duration delayDuration =
  115.             // Вычислите время вылета с учётом задержки.
  116.             ZonedDateTime departureWithDelay = ...
  117.             // Вычислите время прилёта с учётом задержки.
  118.             ZonedDateTime arrivalWithDelay = ...
  119.  
  120.             System.out.println("Ваш вылет задерживается.");
  121.             // Выведите продолжительность задержки в формате часы:минуты
  122.             System.out.println("Задержка: " + delayDuration);
  123.             // Выведите отформатированное время вылета с учётом задержки.
  124.             System.out.println("Обновлённое время вылета: " + ...);
  125.             // Выведите отформатированное время прилёта с учётом задержки.
  126.             System.out.println("Обновлённое время прилёта: " + ...);
  127.         } else {
  128.             System.out.println("Удачного полёта!");
  129.         }
  130.     }
  131.  
  132.     private static void printTicket(
  133.             String departureTime,
  134.             String departureAirportCode,
  135.             String arrivalAirportCode,
  136.             String departureCity,
  137.             String arrivalCity,
  138.             String arrivalTime,
  139.             String departureTimeOnly
  140.     ) {
  141.         System.out.println(
  142.                 " _______________________________________________________\n" +
  143.                         "|                                            |          |\n" +
  144.                         "|  " + departureCity + "|" + departureAirportCode + "      "
  145.                         + departureTime + "  |   " + departureAirportCode + "    |\n" +
  146.                         "|  " + arrivalCity + "|" + arrivalAirportCode + "      "
  147.                         + arrivalTime + "  |   " + arrivalAirportCode + "    |\n" +
  148.                         "|                                            |          |\n" +
  149.                         "|  BOARDING TIME   --:--      SEAT  1A       |   " + departureTimeOnly + "  |\n" +
  150.                         "|  GATE  23                                  |   1A     |\n" +
  151.                         "|____________________________________________|__________|");
  152.     }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement