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

时间:2014-11-23 22:07:31

标签: java

我是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");

    }

}

1 个答案:

答案 0 :(得分:0)

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

Math.random()生成一个介于0和1之间的(伪)随机数。通过乘以并转换为int,可以生成0到100之间的数字。如果该随机数恰好是特定值(在此为50) case)你停止循环并打印线。

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

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()) ));