2014-01-30 157 views
0

我一直在得到一個空指針異常,我不知道爲什麼。請解釋。將2d字符串數組轉換爲2d整型數組

public static int[][] convertStringToInt(String[][] array){ 

    int [][] numbers = new int [array.length][]; 
    for(int row = 0; row < array.length; row++) 
    { 
     numbers[row] = new int [array[row].length];    //line 48 
     for(int col = 0; col < array[row].length; col++) 
     { 
      numbers[row][col] = Integer.parseInt(array[row][col]); 
     } 
    } 
    return numbers; 
} 



public static void main (String[] agrs) 
{ 

    File selectedFile = selectFile("Enter fileName for double number, EX:  
         decimalNumbers.csv"); 
    if(!selectedFile.exists()) 
    { 
     System.out.print("\nFile does not exit, program terminating\n\n"); 
     System.exit(1); 
    } 

    int countLines = countLinesInFile(selectedFile); 
    String cities [][] = loadArrayFromFile(selectedFile, countLines); 

    int [][] unitsSold = convertStringToInt(cities); //line 157 

    System.out.println(unitsSold); 
} 

這裏的時候,我輸入文件名

Exception in thread "main" java.lang.NullPointerException 
at labReview.ArrayOfArrays.convertStringToInt(ArrayOfArrays.java:48) 
at labReview.ArrayOfArrays.main(ArrayOfArrays.java:157) 
+0

這對我來說很好,你可以給出一個輸入示例,哪裏出現錯誤? – Christian

+0

我不明白這一點:'int [] [] numbers = new int [array.length] [];'...未指定第二個維度。 –

+0

沒有必要在二維數組中指定二維。嘗試使用Google搜索。 – Christian

回答

1

convertStringToInt正常工作的方法是錯誤的。如果array[row]null你描述NullPointerException異常可能在該行

numbers[row] = new int[array[row].length]; 

發生。因此錯誤可以存在的,因爲該方法loadArrayFromFile返回一個null行,這樣(舉例來說):

String[][] s = { { "1", "2", "3" }, { "1" }, null, { "3", "4" } }; 

打印由該方法loadArrayFromFile返回的數組中的元素,以查看是否有null行。

0

我猜你在你的城市有一個空數組,在某些索引處。

String cities [][] = loadArrayFromFile(selectedFile, countLines); 

嘗試打印你的城市陣列如下

for(String[] cityArr : cities){ 
System.out.println("Cities at Index "+i+" is : "+citiArr); 
} 

如果你看到任何索引「空」的值,然後修改loadArrayFromFile更換黑色陣列,只要你有一個空的同時加入它到城市陣列。

.... 

if(citiArr==null){ 
citiArr = new String[]{}; 
} 
cities[i][j]=citiArr; 

.... 
相關問題