【问题标题】:Preventing multiple objects from being printed防止打印多个对象
【发布时间】:2013-11-19 23:18:09
【问题描述】:
在我的最终 CS180 项目中,我们的任务是创建一个程序,该程序随机生成一些可在购物车中找到的易腐烂和不易腐烂的物品,然后为客户打印收据。
我遇到的问题是找到一种方法来检查创建项目的频率并防止该项目在收据上多次打印。例如,如果有人买了 5 个桃子,我希望输出是桃子 $.99 X 5,总计 4.95 美元,而不是打印桃子 5 次。有什么建议吗?
我拥有的类是 Item(Perishable 和 Nonperishable 的超类)、Perishable(创建易腐烂的物品)和 nonperishable(不易腐烂的物品并计算其税金)。
【问题讨论】:
标签:
java
inheritance
printing
polymorphism
frequency
【解决方案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 中的所有键都是唯一的)。
你当然必须在你的Item 类中实现equals 方法(例如,当它们的名称相等时,项目是相等的)让 HashMap 知道两个项目何时相等(因为当它执行contains 检查,它使用对象的 equals 方法测试是否相等。