2013-12-14 15 views
1

我相信我在閱讀時錯過了一些東西,但我無法弄清楚。我的程序從目錄中獲取圖像文件列表,然後隨機選擇文件作爲遊戲的一部分進行顯示。問題是,每次我用隨機數生成器運行它時,它都有重複的數字。在閱讀中,我看到了Collections,我認爲這對我來說很有用,因爲它會隨機洗牌。這消除了對隨機數發生器的需要。我的問題是,我無法弄清楚如何讓它來洗牌文件[]。如何使用Java集合來洗牌文件[]?

這是我嘗試

comboFile = filePath.listFiles(); 

    List listShuffle = new List(); 
    listShuffle = (List) Arrays.asList(comboFile); 

使用列表沒有擺脫這個錯誤,但現在Collections.shuffle方法是給我一個錯誤的最後一件事。沒有找到適用於shuffle的合適方法(java.awt.list)

Collections.shuffle(listShuffle); 

如何將File數組放入列表中進行隨機播放?

+0

請發佈comboFile的類型,因爲如果它是一個java.awt.List,這是您的問題的重要組成部分,因爲這不是一個集合。 – prmottajr

回答

2

您正在使用錯誤的類型。將您的進口更改爲java.util.List而不是java.awt.List。錯誤是告訴你,沒有辦法接受你傳入的列表類型。

是的,你可能想要使用Arrays.asList()像其他人建議的那樣創建列表。

4

問題似乎是listShuffle在洗牌後從未使用過。您仍然在讀comboFile數組中的數值,該數組從不混洗。

此外,它應該是Arrays.asList()而不是Array.asList()

+0

我沒有更新其他代碼,因爲我得到一個錯誤消息array.asList(comboFile)。該消息是找不到符號方法asList(File []) – user1793408

+0

@ user1793408:如果不包含任何錯誤,任何人都很難提供幫助。我用可能解決這個問題的辦法更新了我的答案。 – jwueller

+0

對不起,我更改了我的代碼,專門專注於問題並列出了錯誤消息。 – user1793408

0

請嘗試Arrays.asList()函數。

它將製作數組的包裝。並調用shuffle()函數,這將改變內部數組元素的順序。