从文件中随机选择行

Vit*_*nko 1 java random file line

我正在尝试创建一种方法,可以选择 lol.txt(有 113 行)中的随机行并将其作为消息框发送出去。它应该如何工作:

  1. 生成从 0 到 112 的随机数
  2. for 循环应该遍历随机行数
  3. 将随机生成的行输出为消息框

在我的情况下,第 2 步不起作用,所以我希望有人能对此提出建议。这是代码:

public void close(){
    try{
        Random random = new Random();
        int randomInt = random.nextInt(112);
        FileReader fr = new FileReader("lol.txt");
        BufferedReader reader = new BufferedReader(fr);
        String line = reader.readLine();
        Scanner scan = null;
        for (int i = 0; i < randomInt + 1; i++) {
            scan = new Scanner(line);
            line = scan.nextLine();
        }
        JOptionPane.showMessageDialog(null,line);
    }catch (IOException e){
        JOptionPane.showMessageDialog(null,e.getMessage()+" for lol.txt","File Error",JOptionPane.ERROR_MESSAGE);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想将带有数组列表的解决方案发送给我,那很好,但我真的希望它是我最初计划的方式。

Mar*_*k M 5

最好为此目的使用列表,并使随机大小动态调整以适应文件的大小。如果您想添加更多行而无需更改代码。

BufferedReader reader = new BufferedReader(new FileReader("lol.txt"));
String line = reader.readLine();
List<String> lines = new ArrayList<String>();
while (line != null) {
     lines.add(line);
     line = reader.readLine();
}
Random r = new Random();
String randomLine = lines.get(r.nextInt(lines.size()));
JOptionPane.showMessageDialog(null,randomLine);
Run Code Online (Sandbox Code Playgroud)