难以构建一个Arraylist方法

时间:2012-01-18 00:27:32

标签: java

我正在尝试构建一个方法,允许我找到arraylist中的一些项目的总成本。目前我有一个充满"项目的arraylist。"在item类中,对象具有getQuantity和getPrice找到的价格和数量。我试图找到arraylist中所有项目的总费用,但仍然会遇到5个错误。任何人都可以帮助,谢谢,

编辑:发布错误

 public double getTotalCost()
         {

            double total;
            for(int i = 0; i < cart.size; i++) // size has private access in ArrayList
            {
                total = ((cart.get(i)).getQuantity) * ((cart.get(i)).getPrice) + total; // cannot find symbol // illegal start of type// cannot find symbol // illegal start of type
            }


            return total;
         }   
    }

4 个答案:

答案 0 :(得分:1)

你缺少括号,很多。试试这个:

public double getTotalCost() {
    double total = 0;
    for (int i = 0; i < cart.size(); i++) {
        total = cart.get(i).getQuantity() * cart.get(i).getPrice() + total;
    }
    return total;
}

我假设cart是使用泛型声明的,如下所示:

ArrayList<Item> cart = ...

结论课:当你在Java中调用一个方法时,总是在名称后面有括号,即使它没有收到任何参数。

答案 1 :(得分:1)

要在对象上调用方法,您始终需要使用括号。所以不是cart.size而是cart.size()。如果不这样做,Java希望您为对象请求public variable。您的列表对象中的大小为private variable,因此会为您提供私人访问错误

public double getTotalCost(){
  double total = 0;
  for(int i = 0; i < cart.size(); i++){
    total =  ( cart.get(i).getQuantity() * cart.get(i).getPrice() ) + total;
  }
  return total;
}   

答案 2 :(得分:0)

您可以使用size()方法获取ArrayList的大小 - ArrayList的size字段是私有的,但该方法是公共的,可以替代使用。

另一个错误可能来自于尝试访问Item类的getPricegetQuantity字段而不是getPrice()getQuantity()方法 - 另一个快速修复,只需记住括号!

从语法上讲,你可以在for循环中使用一些不同的语法让自己变得更容易一点(尽管这可能超出了你的课程范围):

double total = 0;
for (Item i : cart) {
    total += i.getQuantity() * i.getPrice();
}

其他一些提示:您的total字段未初始化为任何内容(尽管在上面的示例中)。这可能适用于本机类型(整数,浮点数,双精度等),但它肯定会在以后使用非基本类型引起编译器投诉。如果有疑问,请将它们初始化为0表示原语或null

答案 3 :(得分:0)

不确定为什么每个人都绕过明显的for循环结构来缓解这一点。在这里,我使用CartEntry,将其替换为List中具有getQuantity()和getPrice()方法的任何对象。

double total = 0;
for(CartEntry entry: cart){
  total += entry.getQuantity() * entry.getPrice();
}
return total;

我在看它的时候。我建议在购物车中的任何对象类型上放置一个extendedPrice()方法,它为您提供数量*价格乘法。