2012-01-27 44 views
0

我是编程新手。获取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(); 
+0

我不知道如何去除这个异常 – user1172026 2012-01-27 12:34:43

+2

为什么神奇数字2337? – adarshr 2012-01-27 12:35:06

+2

请将堆栈跟踪添加到您的问题以及 – fmucar 2012-01-27 12:35:52

回答

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

还要注意,因为你的逻辑显得缺乏效率,因为你每次都重新创建行要添加一行。

+0

现在我得到“行不能解析为变量” – user1172026 2012-01-27 12:46:12

+0

线程“主”java.lang.IllegalStateException异常:扫描器关闭 \t at java.util.Scanner.ensureOpen (Unknown Source) \t at java.util.Scanner.findWithinHorizo​​n(Unknown Source) \t at java.util.Scanner.nextLine(Unknown Source) \t at read_file.main(read_file.java:115) – user1172026 2012-01-27 13:00:14

+0

while((line = in.nextLine())!= null){是行 – user1172026 2012-01-27 13:00:46