在Java中,如何告诉文件选择并打印随机单词?

时间:2020-07-06 04:29:22

标签: java file random word

下面是我到目前为止的代码。我只是在几周前才开始编程,所以对这一切我还是陌生的,而且我不知道如何随机选择和打印单词。我从哪里开始?

public static String randomWord(String fileName) 
 throws FileNotFoundException {
    int fileSize = countWords(fileName);
    int N = (int) (fileSize*Math.random());
    Scanner inFile = new Scanner(new File(fileName));
    String word;
    
 
     
  while (inFile.hasNext()) {
     word = inFile.next();
    }
    inFile.close(); 
    return word;
}

3 个答案:

答案 0 :(得分:1)

嗨,看来您的变量N是您要查找的随机词的编号位置(此外,与您的问题分开,但在Java中,所有变量名都以小写字母开头,{{ 3}})。有几种方法可以执行此操作,可以使用while循环将文件中的每个单词都放入一个数组中,这在以后要获取其他随机单词时非常有用,或者您可以跟踪循环中您所要编号的单词的数量,并在到达时打印第N个单词。因此:

int fileSize = countWords(fileName);
int N = (int) (fileSize*Math.random());
Scanner inFile = new Scanner(new File(fileName));

int count = 0;
while(inFile.hasNext() && count < N) {
      inFile.next();
      count ++;
}
String word = inFile.next();
System.out.println(word);

答案 1 :(得分:0)

您可以通过这种方式生成随机数

import java.util.Random; 
Random rand = new Random(); 
int rand_int = rand.nextInt(1000);
System.out.println("Random Integers: "+rand_int); 

使用random Integer选择随机单词作为阅读器中文件的索引。希望它能工作

答案 2 :(得分:0)

[注意]:此解决方案适合于实践目的,但在时空权衡方面非常昂贵,如果您要向月球发射火箭,请不要复制粘贴这段代码!

对于一个更简单的解决方案,您可以将这些单词一个一个地添加到ArrayList中,然后可以返回一个随机索引。

这是示例代码:

public static String randomWord(String fileName) 
 throws FileNotFoundException {
    Scanner inFile = new Scanner(new File(fileName));
    ArraList<String> arr = new ArraList<String>();
    String word;
    
 
     
  while (inFile.hasNext()) {
     word = inFile.next();
     arr.add(word);
    }
    inFile.close();

    Random rand = new Random(); //instance of random class
    int upperbound = arr.size();
    //generate random values from 0-(N-1)
    int int_random = rand.nextInt(upperbound);
    return arr.get(int_random);
}

我还没有编译它,但是如果您在执行它时遇到任何错误,请告诉我。