-1

请我需要帮助。

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

1-第一个方法称为 getOrder() ,它应该获取已添加到名为 order 的 ArrayList 的不同项目的订单,但我只是没有包含它的代码,因为我认为没有必要。我需要返回 order ArrayList 的所有内容,只要它不包含 null。getItem 方法(运行良好)使用 A4Q1Util 类按顺序加载项目的内容。

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

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

它给出了以下错误:

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

2- 在第二种方法(printOrderCos)中,我应该从 ArrayList 订单中打印出项目的总成本。我定义了变量 totalCost 和 count。Count 被定义为作为一个索引,遍历 order 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

4 回答 4

1

错误消息准确地告诉您出了什么问题:

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

于 2013-11-15T04:29:49.293 回答
0

您的方法get()似乎正在返回一个Item实例,因此您可能希望创建一个方法(如果尚未创建)来返回一个可用于添加到的数字totalCost,可能类似于:

totalCost += order.get(count).getCost(...); // getCost(...) is the method you should create
于 2013-11-15T04:41:38.467 回答
0

对于您的第二个问题,问题是“order.get(count)”返回项目对象。并且您不能用双精度添加“项目对象”。

于 2013-11-15T04:44:29.200 回答
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;

     }
于 2013-11-15T05:06:58.443 回答