Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从txt文件中选择随机单词?_Java_File - Fatal编程技术网

Java 如何从txt文件中选择随机单词?

Java 如何从txt文件中选择随机单词?,java,file,Java,File,我有一个方法,需要从txt文件中选择一个随机单词,但它只在某些时候起作用 文件内容如下: Broccoli Tomato Kiwi Kale Tomatillo 我的代码: import java.util.Random; 导入java.util.Scanner; 导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 公共字符串getRandomItem(){ Scanner fileIn=null; 字符串temp=“”; i

我有一个方法,需要从txt文件中选择一个随机单词,但它只在某些时候起作用

文件内容如下:

Broccoli
Tomato
Kiwi
Kale
Tomatillo
我的代码:

import java.util.Random;
导入java.util.Scanner;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
公共字符串getRandomItem(){
Scanner fileIn=null;
字符串temp=“”;
int r=randomGenerator.nextInt(5)+1;
字节i=0;
试一试{
fileIn=newscanner(newfileinputstream(“bundles.txt”);
}catch(filenotfounde异常){
System.out.println(“未找到文件”);
系统出口(0);
} 
而(i我会把所有的行读一遍,然后从中随机得到一个单词,比如

private static List<String> lines = null;
static {
    try {
        lines = Files.readAllLines(new File("bundles.txt").toPath());
    } catch (IOException e) {
        e.printStackTrace();
    }
}
private Random rand = new Random();

public String getRandomItem() {
    return lines.get(rand.nextInt(lines.size()));
}
私有静态列表行=null;
静止的{
试一试{
lines=Files.readAllLines(新文件(“bundles.txt”).toPath();
}捕获(IOE异常){
e、 printStackTrace();
}
}
private Random rand=new Random();
公共字符串getRandomItem(){
返回lines.get(rand.nextInt(lines.size());
}

在调试器中运行此程序,自己看看为什么它不总是工作。如何知道它只是在某些时间是随机的?至少运行1000次,并分析结果以查看实际的随机性。我不是说它不总是随机的,我是说我收到一条错误消息:线程“main”中出现异常java.util.NoSuchElementException:找不到行您正在生成一个介于1和5之间的随机数,但您的索引“i”从0到5。我认为您遇到了一个“一个接一个”的错误。如果随机数为5,您将从文件中读取6行,从而导致错误。更改
i