我的程序需要从.txt
文件中读取包含大量单词(在不同行中)的随机单词。
我可以从数组中选择一个随机单词,但我还没有找到如何从.txt
文件中读取随机单词。
public class GuessForm extends javax.swing.JFrame {
String[] FindWord1 = {"hello", "hey", "well", "story", "fight","punch"};
int idx = new Random().nextInt(FindWord1.length);
String FindWord = (FindWord1[idx]);
int wordL = FindWord.length();
// ...
我尝试了以下操作,但它不起作用:
import java.util.Random;
import java.io.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.Scanner;
public class GuessForm extends javax.swing.JFrame {
String filename = "H:\\lol.txt";
File file = new File (filename);
Scanner input = new Scanner new FileReader(file));
while (input.hasNext()) {
String FindWord1 = input.next();
}
int idx = new Random().nextInt(FindWord1.length);
String FindWord = (FindWord1[idx]);
int wordL = FindWord.length();
}
答案 0 :(得分:0)
如果您阅读许多单词,最简单的方法就是将整个文件读入内存并将其存储在数组中。
如果您只检查一次,那么您可以通过只阅读一次而不构建任何数据结构来节省一些时间。请注意,它使用了很多对Random
对象的调用。
public String randomWord(String file)
{
BufferedReader reader = new BufferedReader(new FileReader(file));
int i = 1;
Random r = new Random();
String line, out;
while((line = reader.readLine()) != null)
if(r.nextDouble() < (1.0 / i++))
out = line;
return out;
}
您需要添加一些try / catch或其他异常处理,但这样的事情应该起作用
这种获取随机元素的方法主要用于迭代器/ LinkedLists /文件