【问题标题】:Cannot find method of a class?找不到类的方法?
【发布时间】:2014-03-24 18:56:06
【问题描述】:

我有这个问题:

我必须创建三个类,GroceryList、GroceryItemOrder 和 GroceryMain,主类。在我的 GroceryList 类中,弹出此错误:找不到符号 - 方法 add(GroceryItemOrder)。错误出现在 GroceryList 类中的 list.add(item) 处。我的课有什么问题?谢谢。

这是杂货清单:

    import java.util.*;  

public class GroceryList {  
    private GroceryItemOrder[] list;  
    int num;  

    public GroceryList() {  
        list = new GroceryItemOrder[10];  
        this.num = 0;  
    }  

   public void add(GroceryItemOrder item) {  
        list.add(item);  
   }  

    public double getTotalCost() {  
        double totalcost = 0;  
        for(int i = 0; i < list.length; i++){  
        totalcost += getGroceryItemOrder(getCost());  
        }        
        return totalcost;  
    }

}

这是 GroceryItemOrder:

public class GroceryItemOrder {  
private String name;  
private double pricePerUnit;  
private int quantity;  


   public GroceryItemOrder(String name, int quantity, double pricePerUnit) {  
        this.name = name;  
        this.pricePerUnit = pricePerUnit;  
        this.quantity = quantity;
    }  

    public double getCost() {  
        return (this.quantity * this.pricePerUnit);  
    }  

    public void setQuantity(int quantity) {  
        this.quantity = quantity;  
    }  

}

这是主类:

    public class GroceryMain {  
  public static void main(String[] args) {  
        GroceryList list = new GroceryList();  
        GroceryItemOrder chips = new GroceryItemOrder("chips", 5, 1.25);  
        list.add(chips);  
        GroceryItemOrder apples = new GroceryItemOrder("apples", 4, 0.50);  
        list.add(apples);  
        GroceryItemOrder oranges = new GroceryItemOrder("oranges", 1, 1.00);  
        list.add(oranges);  
        GroceryItemOrder blueberries = new GroceryItemOrder("blueberries", 10, .05);  
        list.add(blueberries);  
        GroceryItemOrder strawberries = new GroceryItemOrder("strawberries", 1, 4.00);  
        list.add(strawberries);  
        GroceryItemOrder cheese = new GroceryItemOrder("cheese", 1, 3.00);  
        list.add(cheese);  
        GroceryItemOrder chocolate = new GroceryItemOrder("chocolate", 1, 1.50);  
        list.add(chocolate);  
        GroceryItemOrder milk = new GroceryItemOrder("milk", 2, 3.00);  
        list.add(milk);  
        GroceryItemOrder yogurt = new GroceryItemOrder("yogurt", 3, 1.00);  
        list.add(yogurt);  
        GroceryItemOrder tacos = new GroceryItemOrder("tacos", 1, 2.50);  
        list.add(tacos);  
    }  
}

【问题讨论】:

    标签: java arrays class object methods


    【解决方案1】:

    方法add 不适用于常规数组。它适用于Arraylist

    private GroceryItemOrder[] list;  // Standard Arrays
    

    改成

    private ArrayList<GroceryItemOrder> list;  
    

    现在您可以使用list.add(element) 添加。

    【讨论】:

    • 现在当我更改该行时,该行:list = new GroceryItemOrder[10];说不兼容的类型。为什么呢?我不是还只是在构造一个数组吗?或者我应该改变什么?谢谢。
    • list = new ArrayList(10);是创建数组列表的正确方法
    • 现在当我编译 GroceryList 时,这条消息为 totalcost += getGroceryItemOrder(getCost());出现:无法找到符号 getCost()。但是该方法是在 GroceryItemOrder 中定义的。我的语法错了吗?
    • 应该是 totalcost += getGroceryItemOrder().getCost();
    • 它说找不到符号:方法 GroceryItemOrder()。它正在寻找方法,但它得到了错误的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多