这是我的代码

    public static void main(String[] args) {

    File source = //


    Scanner s = null;
    int lineNumber =0;
        ArrayList<ArrayList<Integer>> tagsArray = new ArrayList<>();
    try {

        s= new Scanner(source);
    while (s.hasNext()) {

            String[] cols = s.nextLine().split("    ");

            for (int i = 0; i < cols.length; i++) {
                if (cols[i].equals("1"))
                    tagsArray.get(i).add(lineNumber);
                }
            lineNumber++;

        }
    } catch (Exception e) {
        // TODO: handle exception
    }
}


当我删除for语句时,它将读取整个文本文件,但是当我使用它时,它将仅读取第一行
为什么?

最佳答案

我想您会得到一个Exception,但是您捕获并隐藏了它,而不是对其进行了处理。这真是太糟了!您至少应该打印异常的堆栈跟踪。

您尝试访问:

tagsArray.get(i).add(lineNumber);


tagsArray为空时。您需要在访问ArrayList<Integer>之前实例化每个tagsArray

09-30 10:51