java 外部 while 循环没有迭代

java outer while loop is not iterating

我写了下面的代码,内部 for 循环工作正常,但外部循环没有迭代。这是我的代码:

BufferedReader userfeatures = new BufferedReader(new FileReader("userFeatureVectorsTest.csv"));
BufferedReader itemfeatures = new BufferedReader(new FileReader("ItemFeatureVectorsTest.csv"));         

while ((Uline = userfeatures.readLine()) != null) 
{
    for (String Iline = itemfeatures.readLine(); Iline != null; Iline = itemfeatures.readLine()) 
    {           
         System.out.println(intersect(Uline, Iline).size()); 
         System.out.println(union(Uline, Iline).size());  
    }
}
userfeatures.close();
itemfeatures.close();

}

它找到 first line of the first fileevery line of the 2nd file 的交集和并集,然后停止。但是,我需要继续并为第一个文件的下一行重复相同的过程。所以,我认为我的外部 while 循环存在一些问题,但我找不到问题所在:| 有人可以帮我吗? 谢谢

itemfeatures 必须在每次读取 userfeatures 时在 for 循环之前初始化。否则你的 itemfeatures 在第一次 while iteration

之后被完全读取

正如人们所说,您的 for 循环会完整读取第二个文件,因此您每次都必须重新读取它。

所以在for循环之前重新创建它的Reader,并且在for循环之后也关闭它。

简而言之,每次从文件 1 读取一行时,您都必须打开、完全读取并关闭文件 2 :

BufferedReader userfeatures = new BufferedReader(new FileReader("userFeatureVectorsTest.csv"));


while ((Uline = userfeatures.readLine()) != null) 
{

    BufferedReader itemfeatures = new BufferedReader(new FileReader("ItemFeatureVectorsTest.csv")); 

    for (String Iline = itemfeatures.readLine(); Iline != null; Iline = itemfeatures.readLine()) 
    {           
         System.out.println(intersect(Uline, Iline).size()); 
         System.out.println(union(Uline, Iline).size());  
    }

   itemfeatures.close();
}
userfeatures.close();

}