如果我注释掉两个for循环,程序将运行正常(假设我调整了一个或两个变量)。但是,当我在Eclipse中编译并运行时,它只是坐着并且没有任何溢出错误或其他任何东西。该文件是一个文本文件,我试图根据哪些行中包含*字符来过滤掉事物。
public List<String> readFile1(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
List<String> list = new ArrayList<>();
String line = null;
String checker = null;
int whereMenuItemIs = 0;
while ((line = br.readLine()) != null) {
if(!line.startsWith("\u0009")) {
for(int i=0; i<getListFromFile("C:/IRT", "bios.txt").size(); i++)
{
if(getListFromFile("C:/IRT", "bios.txt").get(i).contains(line))
{
i = whereMenuItemIs;
}
}
for(int j=whereMenuItemIs+1; j<getListFromFile("C:/IRT", "bios.txt").size(); j++)
{
if(readFile1(file).contains(getListFromFile("C:/IRT", "bios.txt").get(j)))
{
System.out.println("it got here");
}
else
{
checker= checker + getListFromFile("C:/IRT", "bios.txt").get(j);
}
}
if(checker.contains("\u0009*")){
}
list.add(line);
}
}
br.close();
return list;
}
答案 0 :(得分:0)
虽然其他语句中的嵌入函数可以在很多地方使用,但在其他语句中它却不会。
当编译器设置循环和类似的构造时,它做了很多工作。我认为你的循环值为i,计算为getListFromFile(&#34; C:/ IRT&#34;,&#34; bios.txt&#34;)。size();与你的期望有很大的不同。
尝试打印出答案 - getListFromFile(&#34; C:/ IRT&#34;,&#34; bios.txt&#34;)。size();或者将它放在循环之外,将其分配给变量然后使用它。如果等式产生文件大小,它可能会在每个循环中重置自己。
此外,您不应该在程序中读取该文件5次。
答案 1 :(得分:0)
你的专栏:
i = whereMenuItemIs;
应该是:
whereMenuItemIs = i;