首页 文章

从arraylist获得总费用

提问于
浏览
0

我不知道如何从这段代码中获得总成本.......... 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 回答

  • 1

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

    private ArrayList<ItemPrice> itemlist;
    

    应该是这样的

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

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

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

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

    public double getTotalCost() {
        double total = 0;
        for (ItemPrice ip : itemlist) {
            total += ip.getCost();
        }
        return total;
    }
    
  • 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;
     }
    

相关问题