获取NullPointerException - 如何删除它?

时间:2012-01-27 12:31:21

标签: java nullpointerexception

我是编程新手。

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();

1 个答案:

答案 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]);
    }
}

另请注意,由于您的逻辑效率低下,因此每次添加一行时都会重新创建行。