如何从文本文件中获取随机行并打印该行

时间:2015-05-26 17:51:33

标签: java

非常新的Java(只有几天学习)我正在寻找一个随机引用程序。我在quotes.txt文件中的单独行上有引号。我需要做的是抓取一条随机线并打印出来。

我认为步骤是首先确定文件中的行数,然后生成0到行数之间的随机数。然后转到文件中的那一行并打印出来。

我根本不知道如何真正开始(再次,请原谅我,Java新手)。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

我要做的是创建一个ArrayList并在其中添加行。获取0和(ArrayList的大小 - 1)之间的随机数,并获取存储在该索引处的信息的值。我会留下代码供您试一试,但是当您发布已编写的代码时,我会帮助您。

答案 1 :(得分:1)

这是一个快速的想法。注意我还没有测试过这段代码。把它放在一起真的很快......这应该只适用于小文件。如果您需要处理更大量的数据,那么我建议您只需将文件读取到感兴趣的行(基于随机)并仅处理该行。此外,其他库可能特别有助于解决此问题(例如,Apache commons:FileUtils.readLines(file).get(indexNumber))

FileInputStream fs= new FileInputStream("quotes.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
ArrayList<String> array = new ArrayList<>();
String line;
while((line = br.readLine()) != null)
  array.add(line);
// variable so that it is not re-seeded every call.
Random rand = new Random();

// nextInt is exclusive. Should be good with output for array.
int randomIndex = rand.nextInt(array.size());

// Print your random quote... 
System.out.println(array.get(randomIndex));

答案 2 :(得分:0)

  1. 将文件读入ListarrayScannerBufferedReader可以实现此目的。
  2. 使用Random类生成0(含)和数组/列表(不包括)之间的随机数。
  3. 使用(2)中的结果从(1)访问数组/列表中该元素的索引。