Я реализую программу, которая создает и менеджер транспортного средства, с транспортным средством (объектами), и те объекты транспортного средства содержат объекты бронирования (с двумя строками, один для даты начала и один для даты окончания). Так что я сделал некоторые тесты бронирования, и это не Работа. Это должно быть в этом методе.
public boolean isBookable(Booking wishedBooking) {
boolean bookable = false;
if ((wishedBooking.begin.compareTo(begin) != 1
&& wishedBooking.end.compareTo(begin) != 1)
|| (wishedBooking.begin.compareTo(end) != -1
&& wishedBooking.end.compareTo(end) != -1)) {
bookable = true;
}
return bookable;
}
Я попытался использовать compareTo. Даты имеют формат: ГГГГ/ММ/ДД ЧЧ: ММ
Таким образом, единственный способ, которым может быть совершена попытка, - это когда начало и конец этого рев или выше одного из брони. Если в одном случае это не так, это означает, что он не может быть забронирован, так как в один временной интервал временного интервала уже есть заказ. Я использую! =, Потому что возможно, что он может быть равен, поэтому результат будет равен 0.
Объект транспортного средства теперь повторяется с помощью метода над всеми объектами бронирования, чтобы проверить, может ли бронирование быть сделано, и его можно забронировать.
Где ошибка?
Контракт a.compareTo(b)
должен вернуть значение больше 0, если a
"больше", чем b
, значение меньше 0, если оно "меньше" или 0, если они равны. Использование 1 и -1 является чисто детализацией реализации, и вы не должны полагаться на него. То есть, ваш код должен изменить ваш код:
public boolean isBookable(Booking wishedBooking) {
boolean bookable = false;
if ((wishedBooking.begin.compareTo(begin) <= 0
&& wishedBooking.end.compareTo(begin) <= 0)
|| (wishedBooking.begin.compareTo(end) >= 0
&& wishedBooking.end.compareTo(end) >= 0)) {
bookable = true;
}
return bookable;
}
Обратите внимание: поскольку вы только возвращаете boolean
, if
может быть удален, и вы можете просто вернуть его условие:
public boolean isBookable(Booking wishedBooking) {
return ((wishedBooking.begin.compareTo(begin) <= 0
&& wishedBooking.end.compareTo(begin) <= 0)
|| (wishedBooking.begin.compareTo(end) >= 0
&& wishedBooking.end.compareTo(end) >= 0));
}
SimpleDateFormat
а затем с использованиемDate.before
иDate.after
. Это, вероятно, также сделает ваш код более читабельным.