如标签中所述,这是家庭作业,仅使用标准的Java库。
任务是创建一个程序,安排在不同的烤箱中烹饪的订单(包括比萨饼)。订单有一个必须满足的要求,比萨饼有烹饪时间和冷却时间,本来所有的比萨必须在截止日期前煮熟,但不能这么早煮熟,以至于他们离开烤箱的时间超过了冷却时间。如果确定在截止期限之前无法完成订单,则抛出异常。我无法理解的主要问题是如何让程序重新安排烤箱以适应新的订单。
我想不出如何开始这个,并且非常感谢任何帮助!
答案 0 :(得分:1)
您可以开始阅读earliest deadline first scheduling。
您的披萨处理时间(烹饪+酷+等)似乎可以预先计算,因此PriorityQueue可能会有所帮助。 PizzaOrder将实现Comparable接口,该接口比较订单的截止日期。
答案 1 :(得分:1)
一个好的起点是将中间段转换为具有行为和状态的对象,例如
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
从那里开始伪编码你想要在各种方法中发生的事情。从这些构建块开始,您会发现在不整体查看问题时,问题变得更容易解决,但是在小块中。
答案 2 :(得分:0)
很难知道您提供的信息,但如果您想尝试使用JBoss Rules (Drools)这样的规则引擎似乎是一个很好的方案。