2012-01-27 40 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