我是编程新手。
array [row][col] = line.charAt(col);
^这行是我在代码中获得NullPointerException
的地方。如何删除它?
Scanner in = null;
try {
in = new Scanner(new FileReader("C:\\Documents and Settings\\UserXP\\My Documents\\src\\file.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String line="";
ArrayList<String>arrayList=new ArrayList<String>();
while((line=in.nextLine())!=null) {
arrayList.add(line);
char [][] array = new char [2337][];
for (int row = 0; row<arrayList.size(); row++)
for(int col = 0; col<line.length(); col++) {
array [row][col] = line.charAt(col);
System.out.print(""+ array[row][col]);
}
System.out.println("");
}
//Close the input stream
in.close();
答案 0 :(得分:7)
你永远不会为数组的第二维分配任何内存:
char [][] array = new char [2337][];
给你2337 char[]
但所有这些都是空的。
你需要
array[row] = new char[line.length()];
在列循环之前。
编辑(澄清插入的位置):
for (int row = 0; row<arrayList.size(); row++) {
array[row] = new char[line.length()];
for(int col = 0; col<line.length(); col++) {
array [row][col] = line.charAt(col);
System.out.print(""+ array[row][col]);
}
}
另请注意,由于您的逻辑效率低下,因此每次添加一行时都会重新创建行。