#java
Вопрос:
Я уверен, что не был достаточно ясен в названии, разъясняя здесь все. У меня есть пассажир, бронирующий рейс, я хочу составить список, в котором будут храниться рейсы, забронированные пассажиром.
Это часть кода, в которой пассажир завершает бронирование, как мне составить новый список и добавить в него забронированный рейс
@Override
public void payingFirstClassWithoutPromoCode(ArrayList<Flight> flightsList) {
System.out.println("Confirm buying ticket: (yes or no)");
String confirmation = scanner.nextLine();
if (confirmation.equalsIgnoreCase("yes")) {
if (selectedPassenger.getBalance() >= selectedFlight.getPriceForFirstClass()) {
System.out.println("Successful reserved!");
selectedPassenger.setBalance(selectedPassenger.getBalance() - selectedFlight.getPriceForFirstClass());
System.out.println(selectedPassenger.getFirstName() "'s new balance is: " selectedPassenger.getBalance());
} else {
noFundsAvailable(flightsList);
}
} else if (confirmation.equalsIgnoreCase("no")) {
cancellation(flightsList);
} else {
System.out.println("Wrong input!");
}
}
Комментарии:
1. Что такое
selectedFlight
? Почему нетbookedFlights.add(selectedFlight);
?2. Я думаю, что он спрашивает «Как добавить выбранный рейс в экземпляр пассажира».
Ответ №1:
Я думаю, вы можете добавить поле рейса в свой класс пассажира, а затем сделать selectedPassenger.setFlight(selectedFlight)
Вот класс пассажира
class Passenger{
//other fields
Flight flight;
public void setFlight(Flight f){
this.flight = f;
}
Если у пассажира может быть несколько рейсов, затем объявите список в своем классе пассажиров, а затем выполните
selectedPassenger.getFlights().add(selectedFlight);
class Passenger{
//other fields
List<Flight> flight;
public Passenger(){
//don't forget to initialize flight list
flight = new ArrayList();
}
public List<Flight> getFlights(){
return this.flight ;
}
вместо того, чтобы извлекать весь список и добавлять его вручную, вы можете использовать в своем классе пассажиров такой метод, как
public void addFlight(Flight f){
this.flight.add(f);
}
тогда вы можете сделать
Выбранный пассажир.addFlight(выбранный полет);
Ответ №2:
Вы могли бы спроектировать свой класс пассажиров следующим образом:
public class Passenger {
private String name;
private List<Flight> flights;
//Getter and setter for name
public Passenger(String name) {
this.name = name;
this.flights = new ArrayList<>();
}
public void addFlight(Flight flight) {
flights.add(flight);
}
}
Кстати, возможно, стоит провести рефакторинг вашего кода. Я отмечаю, что вы назвали свой метод payingFirstClassWithoutPromoCode(ArrayList<Flight> flightsList)
. Я предполагаю, что у вас будет гораздо больше возможностей, а это значит, что вам придется написать несколько методов с очень похожим кодом.
Может быть хорошей идеей создать один метод, который может обрабатывать множество различных сценариев. Например, вы можете добавить тип билета (первый/бизнес/экономический класс) в качестве параметра в своем методе: payingWithoutPromoCode(ArrayList<Flight> flightsList, String ticketType)
.
Это означает, что вам придется немного переписать свой метод. В моем примере вам, вероятно, потребуется переписать методы в вашем классе полетов. Вместо selectedFlight.getPriceForFirstClass()
тебя это можно сделать selectedFlight.getPrice(ticketType)
.