2016-09-18 168 views
2
ArrayList<String> listArray = new ArrayList<String>(); 

private void AddToListActionPerformed(java.awt.event.ActionEvent evt) {           
    String addTo = txtAdd.getText(); 
    listArray.add(addTo); 
}           

private void randomPickerActionPerformed(java.awt.event.ActionEvent evt) {           

} 

在按鈕randomPicker,我想打印出我的數組中添加一個隨機字符串。你們能幫我解決我應該在那個按鈕裏寫什麼嗎?隨機從一個列表

我想:

String random = (listArray[new Random().nextInt(listArray.length)]); 
    System.out.println(random); 

它說我不能使用nextInt

+0

調用['Collections.shuffle(List )'](https://docs.oracle.com/javase/8/docs/api/java /util/Collections.html#shuffle-java.util.List-)**一次**,然後正常迭代。 –

+0

在「洗牌」上找不到符號 – tryAnroid

回答

0

你可以像這樣

Random ran = new Random(); 
String random = (String) list.get(ran.nextInt(list.size())); 
System.out.println("random :"+rdom); 
+0

謝謝,它運行良好! – tryAnroid

1

String random = (listArray[new Random().nextInt(listArray.length)]);

您正在使用語法陣列,而你的listArray實際上是一個ArrayList(你正在做其他地方list.add()這就是我的猜測)。您需要調用ArrayList的get方法,像這樣:

String random = listArray.get(new Random().nextInt(listArray.size()));

通知的size()方法,length屬性只是一個數組。

+0

謝謝你的解釋,我通過閱讀你的評論瞭解了很多:) – tryAnroid

0

這取決於你想要這東西的東西。但是,通常有兩件事。您可以使用類Random在您的ArrayList中挑選隨機索引。您可以使用java.util.Collections.shuffle()方法。

public static void shuffle(List<?> list) 

要洗牌整個列表。

Random random = new Random(); 
int index = random.nextInt(listArray.size()); 
String random = listArray.get(index); 

我的猜測是你來自C++。 Java中的ArrayLists由實際數組支持。但是,他們無法訪問。你不調用.length,但.size()

+0

是的,尺寸()而不是長度(),認爲這意味着在Java中同樣的東西:) – tryAnroid

+0

它在那裏,但隱藏。 String []數組支持數組類,但是它包含了一堆指針(你永遠不會看到)到String中。所以一切都被封裝了。你只會像時間複雜性那樣把它當作數組來處理。 – Tatarize