如标签中所述,这是作业,仅使用标准 java 库。
任务是创建一个程序来安排在不同烤箱中烹饪的订单(包括比萨饼)。订单有deline,必须满足,并且比萨饼有烹饪时间和冷却时间,本质上所有比萨饼都必须在截止日期前煮熟,但不能过早煮熟,以至于它们离开烤箱的时间超过冷却时间。如果确定无法在截止日期前完成订单,则会引发异常。我无法理解的主要问题是如何让程序重新安排烤箱以适应新订单。
我想不出如何开始,非常感谢任何帮助!
您可以开始阅读最早截止日期优先调度。
似乎可以预先计算您的比萨处理时间(烹饪 + 冷却 + 等),因此PriorityQueue可能会有所帮助。PizzaOrder 将实现Comparable接口,用于比较订单的截止日期。
一个好的起点是将中间段落转换为行为和状态不受约束的对象,例如
class Order
List<Pizza> pizzas;
class Oven
int maxPizzas;
List<Pizza> cooking;
cook(pizza: Pizza);
class Pizza
int cookTimeMins;
int coolTimeMins;
long cookTimeStart;
class PizzaShop
List<Oven> ovens;
List<Order> orders;
scheduleOrder(order: Order) throws Exception
从那里开始伪编码您希望在各种方法中发生的事情。从这些构建块开始,您会发现如果不从整体上看问题,而是在小块上看,问题会变得更容易解决。
很难知道您提供的信息,但如果您想尝试使用诸如JBoss Rules (Drools)之类的规则引擎,这似乎是一个很好的场景。