Mark
Mark

Reputation: 67

Incrementing value in a Map (JAVA)

I'm having a problem with this home work assignment. I can handle the syntax, but not the logic. Could you provide me some tips.

What I'm trying to achieve is that the add method would increase the amount of products by using the increaseAmount method. Now it resets the value of amount to "1" every time I call the method. What makes this complicated is that I'm not allowed to use any other private variables than already used.

private Map<String, Purchase> shoppingCart = new HashMap<String, Purchase>();

public void add (String product, int price) {
        Purchase purchase = new Purchase (product, 1, price); 
                  //the line abowe returns the value back to 1 which I don't want.

        if(shoppingCart.containsKey(product)) {

            shoppingCart.put(product, purchase);
                purchase.increaseAmount();

        }
        else {
             shoppingCart.put(product, purchase);

The product constructor:

public Ostos(String product, int amount, int price) {

Code for the increaseAmount method:

private int amount;

public void increaseAmount() {
    this.amount = (this.amount + 1);

Upvotes: 1

Views: 150

Answers (2)

twain249
twain249

Reputation: 5706

Don't create a new purchase at the beginning only create it if it's not already there

public void add (String product, int price) {

        if(shoppingCart.containsKey(product)) {
            Purchase purchase = shoppingCart.get(product);
            purchase.increaseAmount();
            //You might have to put the purchase back into the cart I'm not sure
        }
        else {
             Purchase purchase = new Purchase (product, 1, price);
             shoppingCart.put(product, purchase);
        }

Upvotes: 6

Louis Wasserman
Louis Wasserman

Reputation: 198033

You have to retrieve the value from shoppingCart and then increment the amount. You're never calling shoppingCart.get, so you're replacing the value each time by blindly putting the new purchase object into the map.

Upvotes: 1

Related Questions