防止打印多个对象

时间:2013-11-19 23:18:10

标签: java inheritance printing polymorphism frequency

对于我最后的CS180项目,我们的任务是创建一个程序,随机生成一些易腐烂和不易腐烂的物品,这些物品可以在购物车中找到,然后为客户打印收据。

我遇到的问题是找到一种方法来检查正在创建的项目的频率,并防止该项目在收据上多次打印。例如,如果有人购买5个桃子,我希望输出为Peach $ .99 X 5,总计$ 4.95,而不是打印桃子5次。有什么建议吗?

我所拥有的课程是Item(Perishable和Nonperishable的超级课程),Perishable(创建易腐物品)和不易腐烂(不易腐烂的物品,还要计算他们的税)。

1 个答案:

答案 0 :(得分:1)

您可以使用HashMap存储所有项目,将项目映射到数量。

类似

HashMap<Item,Integer> receipt = new HashMap<Item,Integer>();

将是您的收据数据结构。

要检查您的receipt是否已有某个特定项目,例如i,您会有

if (receipt.containsKey(i){
    receipt.get(i) += 1; // increment qantity
    // do other stuff to total, taxes etc.
} else { // this is the first time this kind of item is being added
    receipt.put(i, new Integer(1)); // so put it in the map
}

这样可以避免重复(HashMaps中的所有键都是唯一的)。

您当然必须在equals类中实现Item方法(例如,当名称相等时项目相等)让HashMap知道两个项目何时相等(因为当它执行contains检查时,它使用对象的equals方法测试相等性。