【问题标题】:java outer while loop is not iteratingjava外部while循环没有迭代
【发布时间】:2016-03-13 15:28:42
【问题描述】:

我编写了以下代码,内部 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 循环存在一些问题,但我找不到问题所在:| 有人可以帮我吗? 谢谢

【问题讨论】:

  • 我宁愿说它一遍又一遍地循环,而你的 for 循环不再循环了,因为你已经读过 itemfeaturesitemfeatures.readLine() 返回 null 因为你已经在最后了文件。
  • 你可以把itemFeatures的初始化放在外循环里面。或者您可以读取第二个文件的内容一次并缓存您需要的信息。

标签: java while-loop iteration nested-loops


【解决方案1】:

正如人们所说,您的 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();

}

【讨论】:

  • 我刚刚接受了答案,但非常感谢您的时间和精力:)
【解决方案2】:

每次从 userfeatures 读取时,itemfeatures 都必须在 for 循环之前初始化。否则,您的 itemfeatures 在第一次迭代后会被完全读取

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2017-09-08
    • 2021-09-06
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多