Java 检索ArrayList中的随机元素 公共类电影{ 专用随机发生器; 公共静态void main(字符串[]args)引发IOException{ 字符串MovieList=null; try(BufferedReader br=newbufferedreader(newfilereader(“Movielist.txt”)){ 而((MovieList=br.readLine())!=null){ ArrayList MovieNames=新的ArrayList(); addAll(Arrays.asList(MovieList)); //系统输出打印(电影列表); 系统输出打印(MovieNames); 随机r=新随机(); System.out.print(MovieNames.get(r.nextInt(MovieNames.size)); } } 捕获(FileNotFoundException异常){ System.out.println(“我找不到你的文件”); } //随机挑选电影 }

Java 检索ArrayList中的随机元素 公共类电影{ 专用随机发生器; 公共静态void main(字符串[]args)引发IOException{ 字符串MovieList=null; try(BufferedReader br=newbufferedreader(newfilereader(“Movielist.txt”)){ 而((MovieList=br.readLine())!=null){ ArrayList MovieNames=新的ArrayList(); addAll(Arrays.asList(MovieList)); //系统输出打印(电影列表); 系统输出打印(MovieNames); 随机r=新随机(); System.out.print(MovieNames.get(r.nextInt(MovieNames.size)); } } 捕获(FileNotFoundException异常){ System.out.println(“我找不到你的文件”); } //随机挑选电影 },java,arraylist,Java,Arraylist,有人能告诉我如何在Movielist文件中随机选择电影标题吗?我可以打印出整个列表,但我不确定如何随机选择其中一个。您应该实例化一个ArrayList,读取所有电影标题并将其添加到列表中,然后使用random.nextInt()选择一个并打印它。尝试以下方法: public class guessMovies { private Random randomGenerator; public static void main(String[] args) throws IOException {

有人能告诉我如何在Movielist文件中随机选择电影标题吗?我可以打印出整个列表,但我不确定如何随机选择其中一个。

您应该实例化一个ArrayList,读取所有电影标题并将其添加到列表中,然后使用random.nextInt()选择一个并打印它。

尝试以下方法:

public class guessMovies {
private Random randomGenerator;
public static void main(String[] args) throws IOException {

    String MovieList = null;

    try (BufferedReader br = new BufferedReader(new FileReader("Movielist.txt"))) {

        while ((MovieList = br.readLine()) != null) {
            ArrayList<String> MovieNames = new ArrayList<String>();
            MovieNames.addAll(Arrays.asList(MovieList));
            //System.out.println(MovieList);
            System.out.println(MovieNames);

            Random r = new Random();
            System.out.print(MovieNames.get(r.nextInt(MovieNames.size)));
        }
    }

    catch(FileNotFoundException exception) {
        System.out.println("I cannot find your file");
    }
    //pick random movie
}
公共类电影{
公共静态void main(字符串[]args)引发IOException{
弦乐演员;
ArrayList MovieNames=新的ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“Movielist.txt”)){
而((MovieList=br.readLine())!=null){
MovieNames.add(MovieList);
}
for(字符串movieName:MovieNames){
System.out.println(movieName);
}
随机r=新随机();
System.out.println(MovieNames.get(r.nextInt(MovieNames.size()));
}
捕获(FileNotFoundException异常){
System.out.println(“我找不到你的文件”);
}
//随机挑选电影
}
}

System.out.print(MovieNames.get(r.nextInt(MovieNames.size)))
…这已经非常接近您需要的了。问题是什么?将行System.out.print(MovieNames.get(r.nextInt(MovieNames.size));放在读取循环之外(并将括号()添加到size())。它成功了,但现在我无法打印整个MovieList文件,它给了我“null”@Troy Nguyen请参阅上面我编辑的打印MovieList的版本。或者,如果您使用Java 8,则可以使用MovieNames.forEach(System.out::println)替换for each循环;当我创建Random r=new Random()时;它是一个字符串变量吗?所以我想用replaceAll方法将随机名称替换为“_uu”,但我不能使用var r,java说它找不到符号。当您创建random r=new random()时,您创建的是random类型的对象,而不是string.MovieNames.get()方法返回包含电影名称的字符串。如果要将removeAll()应用于该字符串以删除下划线,则MovieNames.get(r.nextInt(MovieNames.size())。replaceAll(““,”)将实现此目的。
public class guessMovies {

    public static void main(String[] args) throws IOException {

        String MovieList;
        ArrayList<String> MovieNames = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader("Movielist.txt"))) {

            while ((MovieList = br.readLine()) != null) {
                MovieNames.add(MovieList);
            }

            for(String movieName: MovieNames){
                System.out.println(movieName);
            }

            Random r = new Random();

System.out.println(MovieNames.get(r.nextInt(MovieNames.size())));
        }

        catch(FileNotFoundException exception) {
            System.out.println("I cannot find your file");
        }
        //pick random movie
    }
}