Получение случайного слова от arraylist

Я хочу получить случайное слово из ArrayList в методе getRandom. My ArrayList загружается из файла. Затем я буду использовать это слово в игре палача. Поэтому я бы хотел, чтобы он печатался как *****

import java.util.*;
import java.io.*;


public class Application {
 private ArrayList<pirateword> piratewords;
 private Scanner input;

 public Application(){
 input=new Scanner(System.in);
 piratewords=new ArrayList<pirateword>();

 }

 public void runApplication() throws IOException {

 String response;
 String w;
 do {

 load("piratewords.txt");
 save("piratewords.txt");
 response=input.nextLine();


 } while (!((response.equals("q")|| (response.equals("q")))));
 System.out.println("Thank you for playing");
 }




 public void load(String fileName) throws IOException{
 Scanner infile =new Scanner(new InputStreamReader(new FileInputStream(fileName)));
 int num=infile.nextInt();infile.nextLine();
 for (int i=0;i</pirateword></pirateword>
3 ответа

public String getRandom() {
 return piratewords.get(new Random().nextInt(piratewords.size());
}


Попробуйте с Collections.shuffle(), если нет никакого смысла перетаскивать элементы в исходном списке.

Примечание. Не используйте его, если в списке имеется большое количество элементов.

if(piratewords.size()>0){
 Collections.shuffle(piratewords);
 System.out.println(piratewords.get(0));
}


Добавьте это в свой конструктор.

Random gen = new Random();

В вашем методе используйте это, чтобы возвратить случайную строку среди вашего arraylist

public String getRandom() {
 int index = gen.nextInt(piratewords.size());
 return piratewords.get(index);
}

licensed under cc by-sa 3.0 with attribution.