2014-10-29 66 views
0

我現在有點被卡住了一部分任務,希望你能告訴我我哪裏出錯了。從另一個對象獲取數組列表

我正在建立一個非常複雜的iTunes程序,目前正在研究一種方法來讓所有參與特定音軌的音樂家顯示出來(例如「Frank Black,Joey Santiago,Kim Deal」等)。方法需要通過檢索Artist對象內的數組列表並顯示它。

雖然我遇到了我的get()方法問題。我知道我應該實施get()方法,以便Track對象可以訪問Artist對象中的字段,但是我嘗試執行此操作的所有方法都發送了錯誤消息。到目前爲止,我已經試過「for循環」的增強是這樣的:

for (String member : members.getMembers()) { 

其中「成員」是ArrayList其中包含每個音樂家的名字的String,但發出了「不能找到符號 - 可變成員「。然後,我試着這樣做:

for (String member : Artist.members.getMembers()) { 

但說「非靜態變量成員不能從靜態上下文中引用」。我覺得我錯過了一些非常基本的東西。你們中的任何人都知道它可能是什麼......?

+0

能否請您發表您的主類和藝術家類。 – 2014-10-29 16:28:04

+0

你可以向你展示你嘗試這樣做的課程嗎? – conFusl 2014-10-29 16:33:55

+0

你能告訴我們你是如何聲明成員ArrayList的。你使用了static關鍵字嗎?請只添加更多的代碼:) – bvdb 2014-10-29 16:36:31

回答

0

如果成員是一個ArrayList中持有的字符串,那麼你應該做這樣的

for (String m: members){ 

} 

或者

for (String m : Artist.members){ 
} 

這曾經是適用於您的situition

+0

'會員'必須成爲公共領域才能發揮作用嗎? – Zetland 2014-10-29 17:01:12

+0

是的,如果你像這樣訪問它,那麼它應該是公開的,其他明智的你需要訪問器方法 – 2014-10-29 17:09:30

0

這裏Artist是一個類,不是一個類的實例。通常藝術家沒有任何成員,而John Doe尤其可以擁有成員名單。

你需要爲了得到一個藝術家的實例,要求他的會員

0

假設每個Track有一個Artist,每個Artist可能有多個音樂家(成員),那麼你正在尋找的東西是這樣的:

public class Artist { 
    private List<String> members; 

    // ... 

    public List<String> getMembers() { 
     return Collections.unmodifiableList(members); 
    } 
} 

public class Track { 
    private Artist artist; 

    // ... 

    public String getMusicians() { 
     StringBuilder sb = new StringBuilder(); 
     int length; 

     for (String member : artist.getMembers()) { 
      sb.append(member).append(", "); 
     } 

     return sb.substring(0, sb.length() - 2); 
    } 
} 
0

首先你需要實例化一個Artist對象,然後遍歷包含藝術家ArrayList<String>

class Artist { 
    private List<String> artists; 
    ... 
    public List<String> getArtists() { 
     return artists; 
    } 
    ... 
} 

那麼當你想遍歷它

public static void main(String[] args) { //or where ever you call it from 
    members = new Artist(); 
    // do stuff to members object 
    for (String m : members.getArtists()) 
     System.out.print(m + " "); 
    System.out.println(); 
} 
相關問題