从arraylist获得总费用

时间:2015-03-24 04:25:02

标签: java arraylist

我不知道如何从这段代码中获得总成本.......... PurchaseList类应使用数组字段来存储所购买的项目,并跟踪其大小(数量)到目前为止列表中的项目)。 PurchaseList类应具有以下方法:

PurchaseList()//构造一个新的空购买清单。

public void add(ItemPrice item)//如果列表未满(即少于10个项目),则将给定的购买项目添加到此列表中。

public double getTotalCost()//返回此列表中所有已购买商品的总和成本。

编写另一个名为ItemPrice的类,它根据数量表示项目的价格。 ItemPrice类应存储项目数量和每单位价格。 ItemPrice对象应具有以下方法:

ItemPrice(String name,int quantity,double pricePerUnit)//构造具有给定名称,数量和每单位价格的购买项目。

public double getCost()//仅以给定数量返回此项目的总费用。

public void setQuantity(int quantity)//将此购买项目的数量设置为给定值。

最后创建测试类;

这是我的代码;

import java.util.ArrayList;
import java.util.List;

class PurchaseList{

double totalcost = 0;

private ArrayList<ItemPrice> itemlist;

PurchaseList(){
    itemlist = new ArrayList<ItemPrice>(10);
}

public void add(ItemPrice item){

    itemlist.add(item);
}

public double getTotalCost(){
for (ItemPrice pricelist : itemlist) {
    totalcost += pricelist.getCost();
}
return totalcost;
}
}




class ItemPrice{
String name;
int quantity;
double pricePerUnit;

ItemPrice(String name, int quantity, double pricePerUnit){
    this.name=name;
    this.quantity=quantity;
    this.pricePerUnit=pricePerUnit;
}

public double getCost(){
    return pricePerUnit*quantity;
}

public void setQuantity(int quantity){
    this.quantity=quantity;
}
}


    public class TestPurchase{
    private double item;

    public static void main (String[] args) {

    PurchaseList test = new PurchaseList();

    ItemPrice itm =new ItemPrice("Milo",4,20.00);
    ArrayList<ItemPrice> itemlist= new ArrayList<ItemPrice>();
    itemlist.add(itm);
    System.out.println(itm.quantity+" item(s) of "+itm.name +" is RM "+itm.getCost()+". Each item is priced at RM " + itm.pricePerUnit);

    ItemPrice itm1 =new ItemPrice("Milk",4,5.00);
    itm1.setQuantity(1);
    itemlist.add(itm1);

    System.out.println(itm1.quantity+" item(s) of "+itm1.name +" is RM "+itm1.getCost()+". Each item is priced at RM " + itm1.pricePerUnit);

    System.out.println("The Total cost of item in this list is RM "+test.getTotalCost());
  }

  }
谢谢!!!!!!

2 个答案:

答案 0 :(得分:1)

首先,itemlistnull(并且你没有在构造函数中初始化它),所以这个

private ArrayList<ItemPrice> itemlist;

应该是

private List<ItemPrice> itemlist = new ArrayList<>();

然后,您可以保留一个正在运行的总计,因为项目已添加到列表中,如

public void add(ItemPrice item){
    itemlist.add(item);
    totalcost += item.getCost();
}

您可以迭代ItemPrice(s)并计算调用getTotalCost()时的总数。

public double getTotalCost() {
    double total = 0;
    for (ItemPrice ip : itemlist) {
        total += ip.getCost();
    }
    return total;
}

答案 1 :(得分:0)

好了,因为你有一个访问器方法,你可以使用getCost()并将arraylist中的每个值添加到一个变量中。然后,该变量可用于返回arraylist中所有itemprices的总成本。

 public double getTotalCost()
 {
     double totalcost = 0;
     //BE SURE TO START TOTAL COST AT ZERO OR IT CANNOT ADD UP!!!
     for(int i = 0; i < itemlist.size(); i++)
     {
         totalCost += itemlist.get(i).getCost();
     }
     //DON'T DO IT IN THE FOR LOOP OR THE RETURN STATEMENT WILL STOP IT!
     return totalCost;
 }