我正在尝试构建一个方法,允许我找到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;
}
}
答案 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类的getPrice
和getQuantity
字段而不是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()方法,它为您提供数量*价格乘法。