2012-03-23 42 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

相关问题