2015-02-26 6 views
0

Мне было интересно, почему это не работает. Я посмотрел на другое сообщение, которое предложило метод, который я использовал для вызова методов из объектов, хранящихся в массиве, но он, похоже, не работает. Я должен уточнить. Я имею в виду методы printPurchases и totalCost. Более конкретно, как они, похоже, не позволяют мне звонить из объекта Purchase по индексу i, но вместо этого он вызывает вызов из части get(i). Он выделен красным цветом в приложении eclipse.Методы вызова из объектов, хранящихся в arraylist

public class Customer { 

    private String name, address; 
    double total; 
    private ArrayList purchases = new ArrayList(); 

    public Customer(String name, String address){ 
     this.address=address; 
     this.name=name; 
    } 

    public void makePurchase(Purchase purchase){ 
     purchases.add(purchase); 
    } 

    public String printPurchases(){ 
     for(int i=0; i<purchases.size(); i++){ 
      return **name+"\t"+address+purchases.get(i).toString();** 
     } 
     return""; 
    } 

    public double totalCost(){ 
     total=0; 
     for(int i=0; i<purchases.size(); i++){ 
      total = **total+purchases.get(i).getCost();** 
     } 
    } 
} 
+1

Что именно "* не работает *"? –

+1

что не работает? – Zielu

+0

при использовании интерфейса List укажите, какой объект вы храните. в вашем случае добавьте после того, как ArrayList – ModDL

ответ

1

Ваше возвращение заявление должно иметь место между ними return и "".

public String printPurchases(){ 
    for(int i=0; i<purchases.size(); i++){ 
     return name+"\t"+address+purchases.get(i).toString(); 
    } 
    return ""; 
} 

public double totalCost() предполагают, чтобы вернуть double. Вы не возвращаете double.

public double totalCost(){ 
    total=0; 
    for(int i=0; i<purchases.size(); i++){ 
     total = total+purchases.get(i).getCost(); 
    } 

    return total; 
} 

Кроме того, как сказано в комментариях укажите, что ArrayList должна быть заполнена, используя:

private ArrayList<Purchase> = new ArrayList<Purchase>(); 
1

Информация о типе, то есть ATTR и метод Purchase будут удалены (вентиляционный к Object, без самоопределяемой ATTR или метод), когда вы сохранили их в ArrayList, без Generic типа, попробуйте сохранить их как это:

private ArrayList<Purchase> purchases = new ArrayList<>(); 

 Смежные вопросы

  • Нет связанных вопросов^_^