关于java:从arraylist获取总费用

Get total cost from 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)//将此购买项目的数量设置为给定值。

最后创建测试类;

这是我的代码;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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());
  }

  }

谢谢!!!!!!


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

1
private ArrayList<ItemPrice> itemlist;

应该是这样的

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

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

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

或者你可以迭代ItemPrice(s)并计算getTotalCost()被调用时的总数。

1
2
3
4
5
6
7
public double getTotalCost() {
    double total = 0;
    for (ItemPrice ip : itemlist) {
        total += ip.getCost();
    }
    return total;
}


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

1
2
3
4
5
6
7
8
9
10
11
 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;
 }