Nastya is the best <3
unknown
java
2 years ago
7.3 kB
23
Indexable
import java.time.Duration; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; class Practicum { // Задайте форматирование для времени и даты в формате часы:минуты день.месяц.год // Пример - 12:15 02.11.21 public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm dd.MM.yy"); // Задайте форматирование для времени в формате часы:минуты public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm"); public static void main(String[] args) { System.out.println("Тест №1:"); printFlightInformation( "12:15 02.11.21", "VKO", "LED", 30, 1, 55 ); System.out.println("\nТест №2:"); printFlightInformation( "14:00 03.10.21", "SVX", "VVO", 0, 9, 5 ); System.out.println("\nТест №3:"); printFlightInformation( "06:00 12.12.21", "DME", "VVO", 0, 12, 0 ); System.out.println("\nТест №4:"); printFlightInformation( "23:00 29.03.22", "LED", "SVX", 0, 2, 55 ); } private static void printFlightInformation( String formattedDepartureTime, String departureAirportCode, String arrivalAirportCode, int delay, int flightDurationHours, int flightDurationMinutes ) { Airport departureAirport; Airport arrivalAirport; // С помощью класса AirportDatabase получите данные об аэропортах вылета и посадки. // При получении исключения выведите сообщение исключения. try { departureAirport = AirportDatabase.getAirportByCode(departureAirportCode); arrivalAirport = AirportDatabase.getAirportByCode(arrivalAirportCode); } catch(IllegalStateException e) { System.out.println(e.getMessage()); return; } // Создайте экземпляр ZonedDateTime с помощью formattedDepartureTime и зоны аэропорта вылета. LocalDateTime local = LocalDateTime.parse(formattedDepartureTime, DATE_TIME_FORMATTER); ZoneId departureId = ZoneId.of(departureAirport.getZone()); ZonedDateTime departure = ZonedDateTime.of(local, departureId); // Выведите информацию о том, между какими городами будет перелёт. System.out.println("Ваш билет на рейс " + departureAirport.getCity() + " - " + arrivalAirport.getCity() + ": "); // Найдите продолжительность полёта. Duration flightDuration = Duration.ofHours(flightDurationHours).plusMinutes(flightDurationMinutes); // Найдите время прибытия с учётом зоны прилёта. ZoneId arrivalZoneId = ZoneId.of(arrivalAirport.getZone()); ZonedDateTime arrivalDateTime = departure.plus(flightDuration).withZoneSameInstant(arrivalZoneId); // Заполните данные для передачи в метод печати билета. // Город вылета String departureCity = departureAirport.getCityForTicket(); // Город прилёта String arrivalCity = arrivalAirport.getCityForTicket(); // Отформатированное время прилёта String formattedArrivalTime = arrival.format(TIME_FORMATTER); // Только время вылета String departureTimeOnly = departure.format(TIME_FORMATTER); printTicket( formattedDepartureTime, departureAirportCode, arrivalAirportCode, departureCity, arrivalCity, formattedArrivalTime, departureTimeOnly ); // Добавьте проверку на случай задержки. if (delay > 0) { // Определите продолжительность задержки. Duration delayDuration = Duration.ofMinutes(delay); // Вычислите время вылета с учётом задержки. ZonedDateTime departureWithDelay = departure.plus(delayDuration); // Вычислите время прилёта с учётом задержки. ZonedDateTime arrivalWithDelay = arrival.plus(delayDuration); System.out.println("Ваш вылет задерживается."); // Выведите продолжительность задержки в формате часы:минуты System.out.println("Задержка: " + delayDuration.toHours() + ":" + delayDuration.toMinutes()); // Выведите отформатированное время вылета с учётом задержки. System.out.println("Обновлённое время вылета: " + departureWithDelay.format(TIME_FORMATTER)); // Выведите отформатированное время прилёта с учётом задержки. System.out.println("Обновлённое время прилёта: " + arrivalWithDelay.format(TIME_FORMATTER)); } else { System.out.println("Удачного полёта!"); } } private static void printTicket( String departureTime, String departureAirportCode, String arrivalAirportCode, String departureCity, String arrivalCity, String arrivalTime, String departureTimeOnly ) { System.out.println( " _______________________________________________________\n" + "| | |\n" + "| " + departureCity + "|" + departureAirportCode + " " + departureTime + " | " + departureAirportCode + " |\n" + "| " + arrivalCity + "|" + arrivalAirportCode + " " + arrivalTime + " | " + arrivalAirportCode + " |\n" + "| | |\n" + "| BOARDING TIME --:-- SEAT 1A | " + departureTimeOnly + " |\n" + "| GATE 23 | 1A |\n" + "|____________________________________________|__________|"); } }
Editor is loading...