Я пытаюсь создать метод, который проверяет, забронирована ли комната в определенное время, и если это так, то она должна сообщить пользователю, что комната уже забронирована. Проблема заключается в том, что метод ВСЕГДА удаляет комнату, для которой было забронировано место, даже если эта комната свободна в выбранное время. Поэтому, если я забронирую номер с 14:00 до 15:00, а затем попытаюсь забронировать его с 16:00 до 17:00, он все равно удалит комнату из имеющихся номеров. Каким-то образом мое утверждение if кажется всегда верным, даже если оно не должно быть.
Пояснение:
Предполагается, что пользователь вводит дату через консоль (я все еще новичок, и это проект для колледжа, извините, если есть какие-то странные ошибки, еще не использовал базу данных). Даты сохраняются в dateB (начало бронирования) и dateE (конец). Я сохраняю все свои комнаты, которые были созданы ранее, в ArrayList, а затем сохраняю их во второй (availableabeRooms), чтобы я мог удалить те, которые уже были забронированы в запрошенное время. Все это прекрасно работает, за исключением оператора if, который по какой-то причине всегда верен. Предполагается удалить только те номера, которые были забронированы в это конкретное время.
Date dateB = null;
Date dateE = null;
System.out.println("Please enter the beginning of your booking (yyyy-MM-dd HH:mm): ");
String enter = sc.nextLine();
try
{
dateB = f.parse(enter);
}catch(
ParseException e)
{
e.printStackTrace();
}
System.out.println("Please enter the end of your booking: ");
try
{
dateE = f.parse(sc.nextLine());
}catch(
ParseException e)
{
e.printStackTrace();
}
ArrayList<Room> availabeRooms = new ArrayList<Room>();
for(Room r : rc.getRoomContainer()){
availableRooms.add(r);
}
for (Booking bk : this.bookings) {
if (!dateB.before(bk.getBeginning()) && !dateE.before(bk.getBeginning())
|| !dateB.after(bk.getEnd()) && !dateE.after(bk.getEnd())) {
for (Room r : rc.getRoomContainer()) {
if (bk.getRoom().equals(r)) {
availableRooms.remove(r);
}
}
}
}