如何计算总servlet

时间:2014-12-18 17:33:11

标签: java servlets

嗨,在我的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);
    }

2 个答案:

答案 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())
}