2016-09-18 2 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 (Список )'] (https://docs.oracle.com/javase/8/docs/api/java /util/Collections.html#shuffle-java.util.List-) ** один раз **, а затем итерации. –

+0

Не удается найти символ на «shuffle» – 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(), как я полагаю). Вам нужно вызвать метод GET из ArrayList, как это:

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++. ArrayLists в java поддерживаются фактическими массивами. Но они недоступны. Вы не вызываете .length на них, но .size()

+0

Да, размер() вместо length(), думал, что это будет означать одно и то же в Java, а также :) – tryAnroid

+0

Он там, но скрыт. Массив String [] поддерживает класс массива, но включает в себя кучу указателей (которые вам никогда не позволяют видеть) в String. Итак, все инкапсулировано. Вы рассматриваете его как массив для временной сложности. – Tatarize

Смежные вопросы