2012-03-23 35 views
0

如何在這種情況下返回int值?如何使用方法從Map中返回值?

import java.util.*; 

    public class ShoppingCart { 

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

    public void add (String product, int price) { 
     Purchase purchase = new Purchase(product, 1, price); 
     shoppingCart.put(product, purchase); 
    } 

    public int totalPrice() { 
     //How do I accomplish this? I want to return all the prices summed together 

     } 
    } 
} 

購買方式的構造是:

public Purchase(String product, int amount, int price) { 
+0

不太明白這個問題。你需要使用的方法還是相同的算法? – 2012-03-23 11:54:43

+0

這是一個家庭作業嗎?如果是這樣,請標記爲 - 否則人們可能會爲你做所有的工作。 ;) – raveturned 2012-03-23 12:00:06

+0

感謝您的幫助,現在就明白了。我之前嘗試過類似的東西,並理解了原理,但無法完全理解。 – Mark 2012-03-23 12:06:29

回答

1

通過在地圖中的值(Javadoc)你循環。因爲這很可能是功課,我會讓你弄清楚其餘的。

2

的你需要遍歷映射值的價格總和的總價格

例如,這代碼將工作。

public int totalPrice() { 
     int sum = 0; 
     for(Purchase p:shoppingCart.values()){ 
      sum+=p.getPrice(); 
     } 
     return sum; 
    } 
0
public int totalPrice() { 
    int i = 0; 
    for(Purchase purchase : shoppingCart.values()) { 
     i += purchase.getPrice(); 
    } 
    return i; 
} 
0
Map<String, Purchase> map = new HashMap<String, Purchase>(); 

    for(String value : map.values()) { 

    } 
0

在下面的代碼,你並不需要爲循環再次運行...
進口的java.util。*;

public class ShoppingCart { 

    private int sum = 0;  

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

    public void add (String product, int price) { 
     Purchase purchase = new Purchase(product, 1, price); 
     if(!shoppingCart.contains(product)){ 
      shoppingCart.put(product, purchase); 
      sum += price; 
     } 
    } 

    public int totalPrice() { 
     return price; 
     } 
    } 
} 
+0

如果產品被添加兩次,這將不起作用。 – ftr 2012-03-23 12:08:21

+0

在地圖中,鍵必須是唯一的。如果你在hashmap中第二次添加產品,它會用新值覆蓋現有的值。而且我更新了代碼,如果已經在hashmap中添加了任何產品,它將不會被第二次添加 – kandarp 2012-03-23 12:11:19

+0

事實上,你將覆蓋價格的金額,並將新的價格添加到總和中,但不會刪除舊的價格。編輯:我不認爲這是一個很好的設計。如果調用者不允許兩次添加相同的產品,我會拋出異常。現在的方式是,代碼假設沒有任何事情發生時,添加調用成功。 – ftr 2012-03-23 12:14:07