Java ArrayList是否只遍历前4个元素?

Java ArrayList是否只遍历前4个元素?,java,file,for-loop,arraylist,iteration,Java,File,For Loop,Arraylist,Iteration,我对Java和编程都是新手,请原谅我的无知 我试图遍历两个ArrayList,scannedcriteria和scannedcandidates,这样scannedcandidates中的每个元素都将使用MeetCriteria方法调用scannedcriteria中的每个元素 出于某种原因,它只遍历scannedcriteria的前4个元素。当我添加一个for循环,在主for循环之前打印scannedcriteria中的每个元素时,它会打印所有元素。我用写入文件的方式再次测试了它,然后,它再次

我对Java和编程都是新手,请原谅我的无知

我试图遍历两个ArrayList,scannedcriteria和scannedcandidates,这样scannedcandidates中的每个元素都将使用MeetCriteria方法调用scannedcriteria中的每个元素

出于某种原因,它只遍历scannedcriteria的前4个元素。当我添加一个for循环,在主for循环之前打印scannedcriteria中的每个元素时,它会打印所有元素。我用写入文件的方式再次测试了它,然后,它再次将它们全部写入。它在try块的开头也给出了正确的arraylist长度

因此,问题在于嵌套for循环的语法。但我也试过暂时把它们换掉,对循环进行增强…什么都不起作用

我觉得自己很愚蠢,我不知道自己做错了什么

    void printResults(){
    try  {
        FileOutputStream bw = new FileOutputStream("results4.txt");
        for (ExamCriteria ex: scannedcriteria){             
            byte [] towrite = ex.getInfo().getBytes();
            bw.write(towrite);
            for (Candidate can: scannedcandidates){
                String result = can.meetsCriteria(checktime, ex);
                if (result != null){                    
                towrite = (", " + result).getBytes();
                bw.write(towrite);                  
            }
                if (scannedcandidates.indexOf(can) == (scannedcandidates.size() -1 )){                      
                    towrite = ( "\r\n").getBytes();
                    bw.write(towrite);
                }                               
        }               
    }           
    bw.close();
    }
    catch (FileNotFoundException e) {
        System.out.println("FileNotFoundException");
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }       
    }

唯一合乎逻辑的解释是引发了异常。是否可以尝试使用调试器或打印一些调试语句?最明显的期望是一个null候选,它会导致NPE被吞没……好吧,那些catch块只会捕获2种特定类型的表达式。您可能会抛出另一种异常(嗯……可能是NullPointerException),它必须被调用堆栈上更高的一些代码所吞并。尝试捕获IOException下面的一般异常。谢谢,我会尝试的!使用调试器逐步完成此操作。这是最好的办法。