繁体   English   中英

如何显示文本文件中的随机行?

[英]How can I display a random line from a text file?

我是Java和stackoverflow的新手。 我有一个文本文件,希望Java程序读取它,然后选择一个随机行并显示它。 我发现的只是演示字节和字符。 如何使用字符串或仅使用一行? 我很抱歉以前曾问过这个问题,但是其他帖子对我没有帮助。 我很茫然,我觉得有一个简单的解决方案。

这是我到目前为止的内容:

package Nickname;

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

public class Nickname {

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

        RandomAccessFile randomFile = new RandomAccessFile("names.txt", "r");

    }

}

我建议您使用缓冲读取器。 使用in.readLine()您可以从文件中获取下一行。

Math.random()生成一个介于0和1之间的(伪)随机数。通过乘以并强制转换为int,您将生成一个介于0和100之间的数。如果该随机数恰好具有特定值(在这种情况下为50),则表示停止循环并打印行。

您可以通过将乘法因子更改为任意值来更改循环中断的几率。 只要确保与指定范围内的数字进行比较即可。

BufferedReader in = new BufferedReader(new FileReader(file));

while (in.ready()) {

  String s = in.readLine();

  //1% chance to trigger, if it is never triggered by chance you will display the last line
  if (((int)(Math.random*100)) == 50) 
     break;

}
in.close();
System.out.println(s);

另外,这样的解决方案可能更优雅,并为您提供平均分配的机会来获得以下两个值之一:

BufferedReader in = new BufferedReader(new FileReader(file));
List<String> myNicknames = new ArrayList<String>();
String line;

while ( (line = in.readLine()) != null) {
   myNicknames.add(line);
}
in.close();

System.out.println(myNicknames.get( (int)(Math.random() * myNicknames.size()) ));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM