在我的最终 CS180 项目中,我们的任务是创建一个程序,随机生成一些可在杂货车中找到的易腐烂和不易腐烂的元素,然后为客户打印收据。
我遇到的问题是找到一种方法来检查创建项目的频率并防止该项目在收据上多次打印。例如,如果有人购买 5 个桃子,我希望输出为 Peach $.99 X 5,总计 4.95 美元,而不是打印 peach 5 次。有什么建议吗?
我的类是 Item(易腐烂和不易腐烂的父类(super class))、Perishable(创建易腐烂元素)和 nonperishable(不易腐烂元素并计算其税费)。
最佳答案
您可以使用HashMap存储所有项目,将项目映射到数量。
所以类似
HashMap<Item,Integer> receipt = new HashMap<Item,Integer>();
将是您的收据数据结构。
要检查您的收据
是否已经包含特定项目,例如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
}
这样您就可以避免重复(HashMap 中的所有键都是唯一的)。
您当然必须在 Item
类中实现 equals
方法(例如,当名称相等时,项目就相等),以便让 HashMap 知道何时两个 Item 相等(因为当它执行 contains
检查时,它使用对象的 equals
方法测试相等性)。
关于java - 防止打印多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084251/