java - 防止打印多个对象

标签 java inheritance printing polymorphism frequency

在我的最终 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/

相关文章:

java - Jface Dialog,如何正确检索用户按下了什么按钮?

C#:重写父类的一个属性

javascript - JS Array.prototype.filter with Array 扩展类构造函数调用

java - 无法下载 html

java - 比较列表和数组

java - 这是一个忽略多线程的有效单例吗

java - 如何在没有浏览器的情况下在客户端进行打印?

Javascript继承与简洁的原型(prototype)赋值语法

c# - 将文件发送到打印机,没有打印任何内容

android - 使用 Google 云打印从应用程序打印到餐厅的指定打印机