[英]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.