我不知道如何从这段代码中获得总成本.......... 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());
}
}
谢谢!!!!!!
答案 0 :(得分:1)
首先,itemlist
是null
(并且你没有在构造函数中初始化它),所以这个
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;
}