【问题标题】:Why am I unable to add lines from a text file to an ArrayList in Java? [duplicate]为什么我无法将文本文件中的行添加到 Java 中的 ArrayList? [复制]
【发布时间】:2017-02-27 03:00:53
【问题描述】:

我在下面有以下代码。如果我注释掉stringList.add(row);,我可以让它打印文档的行(5 行带空格的文本)。如果我不将其注释掉,我会打印一行并且为空。我已经在网上查找了所有可能的内容,但我不明白为什么会这样!

package examples.files;

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author 
 *
 */
public class ReadFileUsingScanner {
    static ArrayList<String> stringList = null;
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) {
        Scanner scanner = null;

        try {
            scanner = new Scanner(new File("customers.txt"));

            while (scanner.hasNext()) {
                String row = scanner.nextLine();
                System.out.println(row);
                stringList.add(row);
            }
        } catch(Exception e) {
            System.out.println(e.getMessage());
        } finally {
            if (scanner != null) {
                try {
                    scanner.close();
                } catch (Exception e) {}
            }
        }
    }

}

您不必解决代码,但我想了解它为什么不起作用的基本原理。

【问题讨论】:

  • 顺便说一句,您应该将堆栈跟踪添加到您的问题中。它不是“打印空值”,而是抛出异常
  • 谢谢,我现在明白了。我会补充一点——这可能就是我没有发现这么简单的错误的原因。

标签: java file arraylist java.util.scanner


【解决方案1】:

您的 arrayList 未初始化。改为

static ArrayList<String> stringList = new ArrayList<String>();

【讨论】:

  • 天哪,谢谢。太尴尬了!
【解决方案2】:

错误是 NPE(NullPointException)。

而且下次遇到bug时,你可能不需要在StackOverFlow上提问。逐行尝试IDE的调试器功能。你会得到答案。

【讨论】:

  • 谢谢,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2012-10-21
  • 2014-12-10
  • 1970-01-01
  • 2016-09-13
  • 2014-03-03
  • 2021-06-11
相关资源
最近更新 更多