我在下面有以下代码。如果我注释掉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) {}
}
}
}
}
您不必解决代码问题,但我想了解其根本原因以及它无法解决的问题。
答案 0 :(得分:4)
您的arrayList未初始化。改为
static ArrayList<String> stringList = new ArrayList<String>();
答案 1 :(得分:0)
错误是NPE(NullPointException)。
下次出现错误时,您可能不需要在StackOverFlow上询问问题。逐行调试IDE的调试器功能。您将得到答案。