我有一个名为getWord()的方法,我不知道要添加什么来实际从文本文件中选择一个单词。我的文本文件由5个单词组成。它可以轻松打印文档中的所有单词,但是每次运行程序时如何以不同方式打印单词。我的代码如下。
private Scanner file;
private final List<String> words;
public TextFile(){
words = readFile();
}
public String getWord(){
return numOfWords;
}
private List<String> readFile() {
List<String> wordList = new ArrayList<String>();
try {
file = new Scanner(new File("words.txt"));
}
} catch (FileNotFoundException e) {
System.out.println("File Not Found");
} catch (Exception e) {
System.out.println("IOEXCEPTION");
}
return wordList;
}
public static void main(String[] args) {
TextFile file = new TextFile();
}
答案 0 :(得分:1)
如果您已经有文本文件中的单词列表,则看起来您的问题归结为如何为要打印的单词的索引选择随机数。在Java中有两种方法(据我所知)。
您可以使用Random
对象。
List<String> words; // assign stuff to words
Random r = new Random();
//yields random number in the range of 0 to words.size()-1 inclusive
int num = r.nextInt(words.size());
或者您可以使用Math.random()
。 Math.random()
返回0(包括)和1(不包括)之间的双精度。
List<String> words; // assign stuff to words
int index = (int)(Math.random() * words.size());
答案 1 :(得分:0)
还有一个版本,你的文件是100GB,但你有一个单词iterator:
Iterator<String> iterator = ...;
long wordNumber = 0;
String word = null;
while (iterator.hasNext()) {
String nextWord = iterator.next();
if (Math.random() < 1.0 / ++wordNumber) {
word = nextWord;
}
}