为什么这个功能在 Eclipse 中不起作用但不显示错误?

Why is this function not working but not displaying errors in Eclipse?

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

虽然在其他语句中嵌入函数在很多地方都有效,但在其他地方却行不通。

当编译器设置 for 循环和类似结构时,它会做很多工作。我认为 i 的循环值计算为 getListFromFile("C:/IRT", "bios.txt").size();与您的预期有很大不同。

尝试打印出答案--getListFromFile("C:/IRT", "bios.txt").size();或将其置于循环之外,将其分配给变量然后使用它。如果等式确实产生了文件大小,它可能会在每次循环时重新设置。

此外,您不应在一个程序中读取该文件 5 次。

您的线路:

i = whereMenuItemIs;

应该是:

whereMenuItemIs = i;