为什么这个函数不工作但不在Eclipse中显示错误?

时间:2015-02-10 05:10:10

标签: java eclipse inputstream

如果我注释掉两个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;
}

2 个答案:

答案 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;