Java BufferedReader未完全读取文件

Java BufferedReader未完全读取文件,java,bufferedreader,fileinputstream,Java,Bufferedreader,Fileinputstream,我有一个50行的文件,每行只包含一个单词,我有下面的类从文件中随机读取一行 public class WordGenerator{ static Random generator; static int numberGenerator(){ generator = new Random(); return generator.nextInt(50)+1; } static String wordSelector(){

我有一个50行的文件,每行只包含一个单词,我有下面的类从文件中随机读取一行

public class WordGenerator{
    static Random generator;

    static int numberGenerator(){
        generator = new Random();
        return generator.nextInt(50)+1; 
    }

    static String wordSelector(){
        String word = null;
        FileInputStream fis = null;
        BufferedReader br = null;
        String temp = String.format("..%sutil%s", File.separator, File.separator);

        try{
            fis= new FileInputStream(temp + "Words.txt");
            br = new BufferedReader(new InputStreamReader(fis));
        }catch(FileNotFoundException ex){
            System.out.println("File not found: " + ex);
        }


        try{
            for(int i = 0; i < numberGenerator(); ++i){
                word = br.readLine();
            }
        }catch(IOException e){
            System.out.println("Error in line reading: " + e);
        }

        System.out.println(word);

        return word;
    }
}
公共类字生成器{
静态随机发生器;
静态整数生成器(){
生成器=新随机数();
返回发生器。nextInt(50)+1;
}
静态字符串字选择器(){
字符串字=null;
FileInputStream fis=null;
BufferedReader br=null;
String temp=String.format(“…%sutil%s”,File.separator,File.separator);
试一试{
fis=新文件输入流(temp+“Words.txt”);
br=新的BufferedReader(新的InputStreamReader(fis));
}捕获(FileNotFoundException ex){
System.out.println(“未找到文件:+ex”);
}
试一试{
对于(int i=0;i
问题是,出于某种原因,类从不返回位于前5-10行之后的任何内容,而是一直返回前5-10行,你知道是什么导致了这种情况吗


提前感谢

您的循环在每次迭代中调用
numberGenerator()
。这意味着,不是从1到50中选取一个随机数,而是每次通过循环绘制一个新的随机数

当你完成5到10次迭代时,很可能你已经画出了一个比我小的随机数


在修复该问题时,将
new Random()
实例化移到该方法之外。您只需要一个随机数生成器,就可以继续对其调用
nextInt()
。你每次都在不必要地创建一个新对象。

Omg,我不敢相信我监督了这一点,非常感谢你的帮助!