2011-12-05 18 views
1

所以基本上我有這樣的構造函數的類League設置元素添加到列表,然後亂

import java.util.*; 

public class League { 

    private String name; 
    private List<Team> teamList; 

    public League(String name) {   
     List<String> teamNames = new LinkedList<String>(Company.teamList); 
     Collections.shuffle(teamNames); 
     teamNames.subList(0, 5); 

     for(int i = 0; i < teamNames.size(); i++){ 
      teamList.add(new Team(teamNames.get(i))); 
     } 
} 
} 

Company恰好有一個SetteamList。 當我打電話給System.out.println(teamNames.get(i))時,它顯示的內容如此明顯,但是當我嘗試基於字符串列表的元素創建新的Team對象時,它給了我一個NullPointerException我不知道那是爲什麼?幫幫我?

這裏是案件的Team類的代碼,你需要它:

import java.util.HashMap; 
import java.util.Map; 


public class Team { 

    protected Map<Integer, Player> teamPlayerMap; 
    private String teamName; 

    public Team(String name) { 
     teamPlayerMap = new HashMap<Integer, Player>(); 
     teamName = name; 
    } 

    public String getTeamName() { 
     return teamName; 
    } 


} 
+1

請嘗試拿出一個簡短的*完整*程序來演示問題。 –

+0

堆棧跟蹤告訴你什麼? – Nim

+0

Therre沒有辦法'新的Team(null)'可以拋出nullpointerexception。請向我們展示更多代碼以提供幫助。 – jontro

回答

3

我認爲這個問題是在這裏:

private List<Team> teamList; 

public League(String name) {   
    // etc... 

    for(int i = 0; i < teamNames.size(); i++) { 
     teamList.add(new Team(teamNames.get(i))); // This will throw! 
    } 
} 

你需要創建一個類的實例執行List<Team>並將其分配給teamList。你沒有這樣做,所以當你撥打teamList.add(...)時,它會拋出一個NullPointerException

解決方法是不是這樣寫:

private List<Team> teamList = new ArrayList<Team>(); 
+0

非常感謝! – Yokhen

0

必須初始化團隊列表:

private List<Team> teamList = new ArrayList<Team>(); 
0

問題是因爲你沒有創建團隊列表的情況下,我認爲。