嗨,在我的servlet中,我已经循环显示购物车的内容,我想添加它"总计"对于购物车中的所有商品来计算我拥有的商品的总数
public double getTotalCost() {
return (getItemCount() * getItemPrice());
}
我的for循环看起来像
for (SimpleItem item : previousItems) {
out.println("<TR>"
+ "<TD>"+ item.getItemName() + "</TD>"
+ "<TD>"+ item.getItemArtistDirector() + "</TD>"
+ "<TD>"+ formatter.format(item.getItemPrice()) + "</TD>"
+ "<TD><DIV>"+ "<FORM id ='2' ACTION='OrderPage'>"
+ "<INPUT TYPE='HIDDEN' NAME='title' VALUE='" + item.getItemName()+ "'>"
+ "<INPUT TYPE='HIDDEN' NAME='artistDirector' VALUE='" + item.getItemArtistDirector()+ "'>"
+ "<INPUT TYPE='HIDDEN' NAME='price' VALUE='" + item.getItemPrice()+ "'>"
+ "<INPUT TYPE='TEXT' NAME='numItems' SIZE=3 VALUE='" + item.getItemCount() + "'>" + "<SMALL>"
+ "<button TYPE='SUBMIT' formaction = 'OrderPage'>Update Order</button>" + "</SMALL>"
+ "</FORM>" + "</DIV></TD>"
+ " <TD>"+ formatter.format(item.getTotalCost())+"</TD>"
+ "<TD>"+ item.getTotal() + "</TD>"
);
}
我的问题是我的总计方法必须看起来像我尝试过
public double getTotal(){
Double temp = getTotalCost();
if(getTotalCost()!=temp){
temp = temp + getTotalCost();
}
return(temp);
}
答案 0 :(得分:0)
首先,您忘了关闭TR
那里。
至于你的总计,你意识到总计不是适用于每个项目的东西。它是所有项目的所有成本的总和。首先,你不应该像你做的那样在每一行显示它。
其次,关于您的方法:出于同样的原因,您无法计算单个项目的类中的总计。只有当您可以看到整个项目集合时,才能计算总计。因此,向SimpleItem
添加类似于getTotalCost()
的方法是不可行的。
您可以将它作为方法添加到servlet,方法是将其传递给集合,循环和求和。但是我建议,因为你已经在循环,所以你只需在循环时计算总计。
所以在你的循环之前添加一个声明:
double grandTotal = 0.0D;
在你的循环中,添加:
grandTotal += item.getTotalCost()
在循环结束时,你将获得总计。您需要显示一个额外的行,您将把总计放在最后,然后才能以</TABLE>
结束。
关于你的方法的最后一点注意事项:不要使用像Double
之类的包装器类声明一个应该用于计算的变量。请改用double
。仅当您将内容放入集合或需要Object时才使用包装类。使用作为Wrapper clase的临时变量将导致创建许多自动框和自动拆箱对象,并为垃圾收集器提供大量工作。
答案 1 :(得分:0)
public double totalPrice(List<SimpleItem> items)
{
double price = 0d;
for (SimpleItem item : items)
{
price = price + item.getTotalCost();
}
return (price / items.size())
}