如何使变量等于Java中文本文件中的随机行?

时间:2015-10-25 04:30:09

标签: java file randomaccessfile

这有点难以解释,但这里什么都没有。 我正在创建一个创建借口的程序,例如:

“我很抱歉,但我的狗吃了我的作业!”

我将其随机化的方式是将“我很抱歉”这个介绍放在文本文件中,然后对它自己的行,然后对“我的狗”的罪犯做同样的事情,以及“吃掉我的原因”家庭作业!”。我想知道如何使变量等于其中一个文件的行。我为另一个程序做了这个,这个创建了随机的莎士比亚侮辱,但我在python中做到了。 我这样做的方式是:

adjective = random.choice(open('/filepath*', 'r').readlines()).strip()

我想在Java中做同样的事情,但我不知道如何做。有什么建议? (我更喜欢可以像python一样在一行中完成的事情)

Thakns寻求帮助。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Files中的java.nio.file.Files类来读取文件,然后随机选择要在结果列表中抓取的索引。像这样:

    List<String> lines = Files.readAllLines(Paths.get("/filepath"));
    String adjective = lines.get(new Random().nextInt(lines.size()));

答案 1 :(得分:0)

哎哟!那会伤害java开发者。与python不同,你需要很多代码才能在java中执行简单的任务,主要是因为它先编译然后解释语言。

谈到你的问题,我不是设计专家,但这个大纲可以帮助你,在三个不同的文本文件中保留你的借口,罪魁祸首和理由。

将这些文件“流线”到缓冲读取器。

使用math.random(totLinesInParticularFile)并使用bufferedreader读取它的结果。

结合三次读取的结果,瞧,你知道了!顺便说一下,可能有更好的设计。

答案 2 :(得分:0)

我猜你可以在java中使用Stream来完成这项工作,但这很复杂。

假设你有关于罪犯和原因的文件,你可以通过BufferedReader读取文件的行到一个java程序,它可以一次读取一行,然后你可以将行添加到准备好的String []数组并使用java中的Random类来获取随机行来构成一个场景并将其写在外部文本中。