2013-09-30 70 views
-1

我正在使用包含多個變量的對象ArrayList。例如:訪問數組列表中的對象的元素

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

和我有多個的ArrayListTicket對象和需要訪問它們。我看的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

開始通過將分號每個字段聲明之後:

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

另外,告訴你正在使用的不是list.get(index).attribute確切的代碼。

+3

類代碼是僞代碼,並且這比評論更多的是評論。 – 2013-09-30 05:48:13

+1

他寫了它的僞代碼,所以我不認爲是這樣。 –

+0

@PiotrChojnacki我將它格式化爲代碼,所以我添加了「僞代碼」 – 2013-09-30 05:51:15

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

你的代碼是「老派」,你應該使用輸入類型,接口和新風格的for循環:

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

@Suresh,謝謝。 – 2013-09-30 05:58:17