Приветствую!
Добрался до большой задачи о ресторане, уже заранее попадались на глаза отзывы о "капризности" валидатора при ее проверке, и на 10 этапе попался, возможно, как раз такой случай: никаких конкретных указаний о реализации метода нет, поэтому я написал его так, как смог придумать, долго тестировал - вроде список формируется правильно, но валидатор утверждает, что у меня в программе нет вообще ничего. Подозреваю, что это связано с введением специального поля класса для хранения лучшего из найденных списков, как переписать код по-другому - пока не придумал.
Текст основного метода формирования списка:
private void getBestList (List<Advertisement> list, int index) {
List<Advertisement> tempList = new ArrayList<>(list);
if (getTotalDuration(list) <= timeSeconds) {
if (getTotalAmount(list) > getTotalAmount(playList)) playList = new ArrayList<>(list);
if (getTotalAmount(list) == getTotalAmount(playList) && getTotalDuration(list) > getTotalDuration(playList)) playList = new ArrayList<>(list);
if (index < storage.list().size()) {
getBestList(tempList, index + 1);
tempList.add(storage.list().get(index));
getBestList(tempList, index + 1);
}
}
}
Соответственно, возникает вопрос: стоит ли пытаться мучаться со своим решением (если оно вообще рабочее, вдруг я что-то не предусматриваю) или проще тупо найти в инете готовое, поскольку в данном случае пытаться предугадать, что именно хочет валидатор, можно месяцами?
Заранее благодарю за любые ответы.
package com.javarush.task.task27.task2712;
import com.javarush.task.task27.task2712.ad.AdvertisementManager;
import com.javarush.task.task27.task2712.ad.NoVideoAvailableException;
import com.javarush.task.task27.task2712.kitchen.Order;
import java.io.IOException;
import java.util.Observable;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Tablet extends Observable{
final int number;
private static Logger logger = Logger.getLogger(Tablet.class.getName());
public Tablet(int number) {
this.number = number;
}
public Order createOrder() {
Order order = null;
try {
order = new Order(this);
if (!order.isEmpty()) {
AdvertisementManager manager = new AdvertisementManager(order.getTotalCookingTime() * 60);
manager.processVideos();
setChanged();
notifyObservers(order);
}
} catch (IOException e) {
logger.log(Level.SEVERE, "Console is unavailable.");
} catch (NoVideoAvailableException e) {
logger.log(Level.INFO, "No video is available for the order " + order);
}
return order;
}
@Override
public String toString() {
return String.format("Tablet{number=%d}", number);
}
}
Чуть позже освобожусь - попробую еще поковыряться, понять, что именно не так. В любом случае, спасибо за подсказку!