从ArrayList(Java)获取items对象及其totalCost

时间:2013-11-15 04:28:14

标签: java

我需要帮助。

我正在尝试完成两种不同的java方法。

1-第一个方法被称为getOrder(),它应该获得已经添加到ArrayList命名顺序的不同项的顺序,但我只是没有包含它的代码,因为我认为没有必要。我需要返回订单ArrayList的所有内容,只要它不包含null。 getItem方法(工作正常)使用类A4Q1Util加载订单中项目的内容。

我遇到的问题是这行代码:

return toBeReturned.add(A4Q1Util.getItem());

它出现以下错误:

类型不匹配:无法从布尔值转换为java.util.ArrayList

2-在第二种方法(printOrderCos)中,我倾向于从ArrayList顺序打印出totalCost项。我定义了变量totalCost和count。定义Count以使其作为索引遍历订单ArrayList的每个元素(项目),然后将每个项目的成本加到totalCost。

我遇到的第二种方法的问题是这行代码:

totalCost+=order.get(count);

它出错了:

错误:对于参数类型double,Item

,运算符+ =未定义
public static ArrayList<Item> getOrder()
     {

          ArrayList<Item> toBeReturned;
          toBeReturned = new ArrayList<Item>();

          while (A4Q1Util.getItem()!=null)
          {
          return toBeReturned.add(A4Q1Util.getItem());
          }

     }


     public static void printOrderCost(ArrayList<Item> order)//prints the total cost of the    order
     {
          double totalCost;
          int count;
          totalCost=0;

          for (count=0;count<order.size();count++)
          {
          totalCost+=order.get(count);//intValue();
          }
          System.out.println("The total cost of your order is:");
     }


 class Item
{
  protected String description;
  protected int quantity;

 public Item (String description, int quantity)
 {
   this.description = description;
   this.quantity = quantity;
 }

 } 

 class Coffee extends Item
{
  protected double unitCost;
  public Coffee (String description, int quantity)
 {
   super(description, quantity);//cost?,and price extraction
   unitCost=4;
 }


}

 class Muffin extends Item
{
  protected double unitCost1, unitCost2, unitCost3;
  public Muffin (String description, int quantity)
 {
   super(description,quantity);
   unitCost1=1;
   unitCost2=0.75;
   unitCost3=0.50;
 }


}


 class TimBits extends Item
{
 protected double unitCost;
 public TimBits (String description, int quantity)
 {
   super(description, quantity);
   unitCost=0.25;
 }
}
class A4Q1Util
{
 private static ArrayList<Item> order;

 private static int count = 0;

 public static Item getItem()
 {
  Item item;

  if (order==null)
  {
   order = new ArrayList<Item>();

   order.add(new Muffin("Bran", 3));
   order.add(new Coffee("Latte", 1));
   order.add(new TimBits("Assorted", 24));
   order.add(new Muffin("Chocolate", 1));
   order.add(new Coffee("Decaf", 2));
   order.add(new TimBits("Chocolate", 12));
   order.add(new Muffin("PeanutButter", 2));
   order.add(new Muffin("Blueberry", 5));
  }

  item = null;
  if (count<order.size())
  {
   item = order.get(count);
   count++;
  }
  {
  return item;
  }



}
}

4 个答案:

答案 0 :(得分:1)

错误消息告诉您完全出了什么问题:

您正在尝试将一个项目添加到一个数字,这显然不起作用。相反,您可能想要从列表返回的项目上调用方法,可能是getCost()方法或类似方法。我们没有要查看的Item类代码,因此无法告诉您调用哪个方法,但希望您的Item类具有返回数字的适当方法。

答案 1 :(得分:0)

您的方法get()似乎正在返回Item实例,因此您可能希望创建一个方法(如果尚未创建)以返回可用于添加到{{{ 1}},可能是这样的:

totalCost

答案 2 :(得分:0)

对于你的第二个问题,问题是“order.get(count)”返回Item对象。并且您不能使用double添加“Item对象”。

答案 3 :(得分:0)

问题1:

public static ArrayList<Item> getOrder()
     {

          ArrayList<Item> toBeReturned;
          toBeReturned = new ArrayList<Item>();
          Item item;
          item=A4Q1Util.getItem();
          while (item!=null)
          {
           toBeReturned.add(item);// it will all the items from A4Q1Util class to list
           item=A4Q1Util.getItem();   
          }
        return toBeReturned;

     }