从ArrayList中选择随机单词?

时间:2018-05-20 00:18:32

标签: java arraylist

我目前有一个计算机科学课程的项目,要求我从文本文件中选择一个随机单词。到目前为止,我已经将文本文件放入一个数组中,目前可以打印整个文件,但对于我的生活,我无法想出从中获取一个随机的单词..?我知道代码很乱,没有组织,抱歉。提前致谢! < 3

package moviemain1;

/**
*
* @author rogerseva
 */
import java.io.*;
import java.util.*;

public class MovieMain1 {

/**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
public static void main(String[] args) throws IOException {
    Scanner scan = new Scanner(new File("movies.txt"));
    int numOfMovies = 0;
    int randomMovie = 0;
    String movies = "";
    String s = scan.nextLine();
    args = s.split("");
    ArrayList<String> movieList = new ArrayList<String>();



     while (scan.hasNextLine()) {
     movieList.add(scan.nextLine());
    }

    while (scan.hasNextLine()) {
        String line = scan.nextLine();
        movies += (line + "\n");
        numOfMovies++;
        randomMovie = (int) (Math.random() * numOfMovies);
    }


    System.out.println(movieList);




     }
   }

3 个答案:

答案 0 :(得分:2)

browser = webdriver.Chrome(r'C:\WebDriver\bin\chromedriver_win32')

使用this获取随机数。然后使用ArrayList的get方法获取随机项。

这是一个小小的演示

ThreadLocalRandom.current().nextInt

从Java 7在所有情况下都更喜欢java.util.concurrent.ThreadLocalRandomjava.util.Random - 它向后兼容现有代码,但在内部使用更便宜的操作。 info here

答案 1 :(得分:1)

让我们开始......

ArrayList<String> movieList = new ArrayList<String>();

while (scan.hasNextLine()) {
    movieList.add(scan.nextLine());
}

while (scan.hasNextLine()) {
    String line = scan.nextLine();
    movies += (line + "\n");
    numOfMovies++;
    randomMovie = (int) (Math.random() * numOfMovies);
}

这没有意义,因为第二个while-loop将永远不会执行,因为第一个while-loop的退出条件与第二个相同。

此外,movieList.size()将返回元素的数量,因此我不理解第二个while-loop的重点,特别是考虑到你可以将它们组合起来......

while (scan.hasNextLine()) {
    String line = scan.nextLine();
    movieList.add(line);
    movies += (line + "\n");
    numOfMovies++;
    randomMovie = (int) (Math.random() * numOfMovies);
}
  

从ArrayList中选择随机字?

在您填写ArrayList后,您可以完成...

Collections.shuffle(movieList);

List现已随机化。您可以使用movieList.get(0),或者如果要继续从列表中选择随机元素而不获取重复值movieList.remove(0)

这当然会使原始列表随机化。如果您想保留原始订单,那么我会使用第二个ArrayList ...

ArrayList<String> randomised = new ArrayList<String>(movieList);
Collections.shuffle(randomised);

答案 2 :(得分:0)

从0生成随机int(可能使用java.util.Random)到ArrayList的长度(不包括)。然后你可以简单地打印出ArrayList中该索引处的String。

Random r = new Random();
int randIndex = r.nextInt(movieList.size());