java为什么这段代码在这里给我一个空异常错误?
为什么会抛出空异常指针错误?我如何修复此错误?谢谢。如果你能解释一下该怎么做。我试图将txt文件中的每一行存储到一个arraylist中,该arraylist进入一个较大的单独行数组列表中
public static ArrayList<ArrayList<String>> addAfter(String file1)throws IOException{
Scanner scanner = new Scanner(new File(file1));
ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>>();
ArrayList<String> a = null;
boolean check = false;
while(scanner.hasNextLine())
{
String str = scanner.nextLine();
String[] stringArr = str.split(" +");
for(int i=0; i<stringArr.length; i++){
a.add(stringArr[i]); //null exception being thrown here
}
stringArr = null;
arr.add(a);
a.clear();
}
return arr;
}
# 1 楼答案
因此:
ArrayList已声明,但未初始化。因此,当访问for循环中的ArrayList时,基本上是在访问一个引用null的变量
相反,要:
此外,代码中还有另一个问题: 您希望创建一个ArrayList of ArrayList,其中在循环中传递同一对象的引用(而不是在循环中创建新的ArrayList),并在for循环结束时将其清除。这将导致将相同的ArrayList添加到
ArrayList<ArrayList<>>
的所有索引中。 对于要插入到arrayList中的每一个新行,都必须执行new ArrayList<String>()
修改代码以执行相同操作:
在Java中,传递引用而不是值(对于对象)
# 2 楼答案
您没有初始化“a”ArrayList对象
而不是
在Java中,对象变量不包含对象本身,而是对对象在内存中实际位置的引用。当您获得NullPointerException时,这意味着Java无法访问对象,因为对象变量为null而不是对象的引用
# 3 楼答案
用这个