2013-09-30 4 views
-1

Я работаю с объектами ArrayList объектов, которые содержат несколько переменных. Например:Доступ к элементу объекта в arraylist

// pseudo code 
class Ticket {  
    int gameID 
    double price 
    int seatnumber 
} 

и у меня есть ArrayList многократных Ticket объектов и необходимости доступа к ним. Я посмотрел на Javadoc и до сих пор я придумал

list.get(index).attribute 

Однако я получаю компиляции ошибки говоря:

не может найти символу

я делаю что-то неправильно с синтаксисом? вот мой код:

public static void printGameMoney(ArrayList games, ArrayList tickets) 
{ 
    double total = 0; 
    double tickMoney = 0; 

    for (int i=0; i<tickets.size(); i++) 
    {   
     double tickMoney = tickets.get(i).priceOfTick; 
     total = total + tickMoney;   
    } 
} 
+4

Ошибки зависят от того, что вы написали. Покажите полные коды, пожалуйста. –

+2

Пожалуйста, покажите свой код и отметьте строку, в которой вы получаете сообщение об ошибке. –

+0

Напишите свой истинный код, а не псевдо. Никто не попытается догадаться, что происходит в вашем коде, если вы его не показываете. –

ответ

2

Если атрибут действительно является одним из ваших членов класса, используйте, пожалуйста, следующее.

((Ticket) list.get(index)).attribute; 
+0

Это просто догадки, не так ли? –

+0

попробовал, и это сработало! Спасибо! –

1

Используйте вместо этого:

public static void printGameMoney(ArrayList games, ArrayList<Ticket> tickets) 
{ 
    double total = 0; 
    double tickMoney = 0; 

    for (int i=0; i<tickets.size(); i++) 
    {   
     double tickMoney = tickets.get(i).priceOfTick; 
     total = total + tickMoney;   
    } 
} 

В основном, изменение приводит к ArrayList<Ticket> вместо простого ArrayList. Таким образом вы сообщаете компилятору, что объекты внутри вашего ArrayList имеют тип Ticket, поэтому они имеют указанные вами атрибуты (например, priceOfTick).

То же самое касается games, поэтому, если у вас есть Game класс, вы должны использовать ArrayList<Game> games.

+0

Большое спасибо, это метод, в котором ArrayList передается из основной программы. –

+0

Нет проблем. Пожалуйста, подумайте о голосовании за ответы, которые вы нашли полезными. –

1

Start, поставив точку с запятой после каждого объявления поля:

class Ticket {  
    int gameID; 
    double price; 
    int seatnumber; 
} 

Кроме того, показать точный код, который вы используете вместо list.get(index).attribute.

+3

код класса - псевдокод, и это скорее комментарий, чем ответ. –

+1

Он написал псевдокод, поэтому я не думаю, что это так. –

+0

@PiotrChojnacki Я отформатировал его как код, поэтому добавил «псевдокод» –

1
List<Object> list = new ArrayList<Object>(); 
((Ticket)list.get(x)).attribute; 
0

Вы должны получить доступ, как это, list.get(i).price; не list.price.get(i);

for (int i=0; i<tickets.size(); i++) 
{ 

    double tickMoney = list.get(i).price; 
    total = total + tickMoney; 

} 

Здесь проблема заключается в том, что с замедлением ArrayList

Если вы объявляете как ArrayList<Ticket> вам не нужно, чтобы бросить там во время получения. Иными словами, вам нужен бросок. Больше для использования для каждого цикла.

3

Вы код «старой школы», вы должны использовать типизированные-типы, интерфейсы и новый стиль для цикла:

public static void printGameMoney(final List<Game> games, final List<Ticket> tickets) 
{ 
    double total = 0; 

    for (final Ticket ticket : tickets) 
    {   
     final double tickMoney = ticket.getPriceOfTick(); 
     total = total + tickMoney;   
    } 
} 

Также заметьте этот метод как ни странно это ничего не возвращает ,

+1

@ Суреш, спасибо. –

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