Если я правильно понял вопрос правильно, вы не спрашиваете, как возвращать внутри итерационного цикла , но стараются не возвращать null
, если подходящее совпадение не найдено, правильно ...? Это имеет смысл, я полагаю; У меня были некоторые коллеги, которые по какой-то причине были против того, чтобы работать с нулем.
Один из подходов, которые вы можете предпринять, - это подход «дозорного значения», как однажды назвал его один из моих наставников (возможно, для него есть лучшее имя). В принципе, у вас есть один конкретный экземпляр Taxi
, который полностью отражает отсутствие такси. В своем классе такси ...
public class Taxi {
public static final Taxi NO_TAXI = new Taxi(/*constructor params here*/);
// Insert the rest of your class here!
}
В принципе, вы хотите инициализировать глобально доступный, постоянный экземпляр такси, который представляет концепцию не будучи такси. Пользователи вашего класса могут посмотреть на этот экземпляр и узнать «О, это означает, что такси не было».
Итак, ваш оригинальный scheduleTaxi
метод будет выглядеть примерно так:
private List<Taxi> taxis = new ArrayList<Taxi>();
Taxi scheduleTaxi(){
for (Taxi taxi : taxis){
if (taxi.isFree()) {
return taxi;
}
}
// No free taxi found! Return the no-taxi instance.
return Taxi.NO_TAXI;
}
Убедитесь, что вы включили, что этот метод будет возвращать NO_TAXI, если нет свободного такси не найдено, так что пользователи не будут путать!
Я лично предпочитаю просто работать с null
. :)
Ваш вопрос не имеет смысла. Ваш код уже делает то, что вы хотите. Вы уже возвращаете первое бесплатное такси внутри цикла и возвращаете нулевое, если нет бесплатных такси. –
Ну, у вас есть весь список «Такси», который вы хотите вернуть? – markspace
Я сделал тест, и он всегда возвращает null, он не возвращает бесплатное такси – Takichiii