扫描程序只读取文本文件的第一行

时间:2013-04-23 10:25:10

标签: java file for-loop java.util.scanner

这是我的代码

    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语句时,它会读取整个文本文件,但是当我使用它时,它只读取第一行 为什么呢?

1 个答案:

答案 0 :(得分:3)

我猜你得到一个Exception,但你抓住并隐藏它而不是处理它。 这非常糟糕!您至少应该打印异常的堆栈跟踪。

您尝试访问:

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

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