简体   繁体   中英

Preventing multiple objects from being printed

For my final CS180 project we have been given the task of creating a program that randomly generates some perishable and nonperishable items that would be found in a grocery cart and then printing a receipt for a customer.

The problem I am running into is finding a way to check the frequency of an item being created and preventing the item from printing multiple times on a receipt. For example, if someone buys 5 peaches the I want the output to be Peach $.99 X 5, total $4.95, instead of printing peach 5 times. Any suggestions?

The classes I have are Item (a super class of Perishable and Nonperishable), Perishable (creates perishable items) and nonperishable (nonperishable items and also figures their tax).

You could use a HashMap to store all items, mapping Item to quantity.

So something like

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

will be you receipt data structure.

And to to check if your receipt already has a particular item, say i , you would have

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
}

This way you can avoid duplicates (all keys in HashMaps are unique).

You would of course have to implement the equals method in your Item class (for example, items are equal when their names are equal) to let the HashMap know when two Items are equal (because when it performs the contains check, it tests for equality using the object's equals method).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM