2. Создайте структуру с именем train, содержащую поля: название пункта назначения, номер поезда, время отправления. Ввести данные в массив из пяти элементов типа train, упорядочить элементы по номерам поездов. Добавить возможность вывода информации о поезде, номер которого введен пользователем. Добавить возможность сортировки массив по пункту назначения, причем поезда с одинаковыми пунктами назначения должны быть упорядочены по времени отправления.напишите на java
Ответы
import java.util.Arrays;
import java.util.Scanner;
class Train implements Comparable<Train> {
private String destination;
private int trainNumber;
private String departureTime;
public Train(String destination, int trainNumber, String departureTime) {
this.destination = destination;
this.trainNumber = trainNumber;
this.departureTime = departureTime;
}
@Override
public int compareTo(Train otherTrain) {
// Сортируем по номерам поездов
return this.trainNumber - otherTrain.trainNumber;
}
public String getDestination() {
return destination;
}
public int getTrainNumber() {
return trainNumber;
}
public String getDepartureTime() {
return departureTime;
}
}
public class Main {
public static void main(String[] args) {
Train[] trains = new Train[5];
// Ввод данных о поездах
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < trains.length; i++) {
System.out.println("Введите данные для поезда " + (i + 1) + ":");
System.out.print("Пункт назначения: ");
String destination = scanner.nextLine();
System.out.print("Номер поезда: ");
int trainNumber = scanner.nextInt();
scanner.nextLine(); // Очищаем буфер после считывания числа
System.out.print("Время отправления: ");
String departureTime = scanner.nextLine();
trains[i] = new Train(destination, trainNumber, departureTime);
}
// Сортировка по номерам поездов
Arrays.sort(trains);
// Вывод информации о поезде по его номеру
System.out.print("Введите номер поезда для получения информации: ");
int inputTrainNumber = scanner.nextInt();
scanner.nextLine(); // Очищаем буфер после считывания числа
boolean trainFound = false;
for (Train train : trains) {
if (train.getTrainNumber() == inputTrainNumber) {
System.out.println("Информация о поезде " + inputTrainNumber + ":");
System.out.println("Пункт назначения: " + train.getDestination());
System.out.println("Время отправления: " + train.getDepartureTime());
trainFound = true;
break;
}
}
if (!trainFound) {
System.out.println("Поезд с номером " + inputTrainNumber + " не найден.");
}
// Сортировка по пункту назначения и времени отправления
Arrays.sort(trains, (train1, train2) -> {
// Если пункты назначения разные, сортируем по пункту назначения
if (!train1.getDestination().equals(train2.getDestination())) {
return train1.getDestination().compareTo(train2.getDestination());
} else {
// Если пункты назначения одинаковые, сортируем по времени отправления
return train1.getDepartureTime().compareTo(train2.getDepartureTime());
}
});
// Вывод отсортированного списка поездов
System.out.println("\nОтсортированный список поездов:");
for (Train train : trains) {
System.out.println("Пункт назначения: " + train.getDestination());
System.out.println("Номер поезда: " + train.getTrainNumber());
System.out.println("Время отправления: " + train.getDepartureTime());
System.out.println("-----------");
}
}
}
Вы можете запустить этот код на Java и вводить данные о поездах. Затем вы можете выбрать определенный поезд, номер которого будет запрошен у вас, и вы увидите информацию о нем. Окончательно, программа отсортирует список поездов по пункту назначения, а затем, в случае одинаковых пунктов назначения, по времени отправления.