2017-07-25 142 views
-4

所以,當我使用它來挑隨機事件的字符串,返回一個空:Java數組返回Null

public static List<String> pickNRandom(List<String> lst, int n) { 
    List<String> copy = new LinkedList<String>(lst); 
    Collections.shuffle(copy); 
    return copy.subList(0, n); 
} 

static List<String> randomP; 
public List<String> items(){ 
    List<String> teamList = new LinkedList<String>(); 
    teamList.add("team1"); 
    teamList.add("team2"); 
    teamList.add("team3"); 
    teamList.add("team4"); 
    teamList.add("team5"); 
    teamList.add("team6"); 
    List<String> randomPicks = pickNRandom(teamList, 3); 
    randomPicks = randomP; 
    return randomPicks; 
} 

public static void Store() { 
    Random rand = new Random(); 
    int people = rand.nextInt(50) + 1; 
    List<String> itemsIn = randomP; 
    System.out.println("People in store: "+people + "\nItems in store: "+itemsIn); 
} 

public static void main(String[] args) { 
    Store(); 

} 

爲什麼返回null,我能做些什麼來解決這個問題?

+0

是的,我一點也不清楚你在這裏要做什麼! –

+0

爲什麼在返回'randomPicks'之前你指定'randomPicks = randomP;'? – 4castle

+0

items()方法甚至沒有調用,npe發生在sysout – Zeromus

回答

1

在此行中List<String> itemsIn = randomP;您指定了未初始化的列表,其默認值爲null。我認爲你的行應該是這樣的:List<String> itemsIn = items();記得把方法items()改爲靜態。

+0

謝謝,這更有意義。 –

0

您尚未在任何時候啓動List<String> randomP

0

它不返回null。您立即覆蓋哪些功能在這裏未初始化的變量返回:

randomPicks = randomP; 

目前尚不清楚爲什麼你有...但不這樣做。

0

randomP宣告但尚未初始化,items()不會被調用,相同pickNRandom

這樣你就可以初始化列表(但這並不意味着它將填充...)

static List<String> randomP = new ArrayList<>(); 

你會得到一個空列表而不是空

人們在商店:12

項目在店:[]

1

問題是清楚的,但不是問題(它可以有不同的解決方案)......我已經添加了微小的變化。

public static List<String> pickNRandom(List<String> lst, int n) { 
    List<String> copy = new LinkedList<String>(lst); 
    Collections.shuffle(copy); 
    return copy.subList(0, n); 
} 

public static List<String> items(){ 
    List<String> teamList = new LinkedList<String>(); 
    teamList.add("team1"); 
    teamList.add("team2"); 
    teamList.add("team3"); 
    teamList.add("team4"); 
    teamList.add("team5"); 
    teamList.add("team6"); 
    return pickNRandom(teamList, 3); 
} 

public static void Store() { 
    Random rand = new Random(); 
    int people = rand.nextInt(50) + 1; 
    List<String> itemsIn = items(); 
    System.out.println("People in store: "+people + "\nItems in store: "+itemsIn); 
} 

public static void main(String[] args) { 
    Store(); 
} 

人們在商店:10個

項目在店:[team6,TEAM2,team3]


在您的代碼randomP是無用的(從未初始化,永遠充滿in)