我有一个抽象类Transaction
,在这里我想计算每个Transaction
的总价。总价格是通过获取Product
中每个Map
的价格,然后将该价格乘以每个Product
的数量来计算的。我只是不知道如何将这些价格乘以数量,这些数量就是Map
中的值。有人可以帮我吗?我几乎尝试了一切,但没有任何效果。
public abstract class Transaction
{
//Attributes
...
//Links
Map<Product,Integer> products;
//Constructor
Transaction()
{
id = newTrId.incrementAndGet();
date = new Date();
products = new HashMap<>();
}
abstract void addProduct(Product aProduct, int aQuantity);
BigDecimal calculateTotal()
{
BigDecimal total = new BigDecimal(0);
for(Product eachProduct : products.keySet())
{
total.add(eachProduct.getPrice());
}
for (Integer eachProduct : products.values())
{
}
return total;
}
}
最佳答案
BigDecimal
是不可变的,并且add
不会更改为其调用的对象。因此,您需要重新分配add
的结果:
BigDecimal calculateTotal() {
BigDecimal total = new BigDecimal(0);
for (Map.Entry<Product, Integer> entry : products.entrySet()) {
total = total.add(BigDecimal.valueOf(entry.getKey().getPrice() * entry.getValue()));
}
return total;
}
关于java - 计算总价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39375279/