2012-12-16 272 views
-2

我越來越java.lang.NullPointerException,但我不知道爲什麼。Java字符串[]字符串[]

private String[] fileInfo; 

public void createPartControl(Composite parent){ 
    ... 

    setFileInfo("MyFile.log"); 
} 

private void setFileInfo(String file){ 
    String[] temp = file.split("\\."); 
    fileInfo[0] = temp[0]; 
    fileInfo[1] = temp[1]; 

    System.out.println(temp[0]); // OK 
    System.out.println(temp[1]); // OK 
    System.out.println(fileInfo[0]); // ERROR 
    System.out.println(fileInfo[1]); // ERROR 
} 
+11

'的fileInfo []''是因爲null'你沒有一個arary的實例分配到它。這不像在C中,數組嚴格是引用類型。請注意,即使在C中,您的代碼也會被破壞,因爲您從不指定'fileInfo []'的大小。 –

+2

您確定打印前3行沒有錯誤嗎?在哪裏對數組元素進行賦值? – Bohemian

回答

2

fileInfo數組需要初始化。

String[] fileInfo = new String[temp.length]; 
2

你有如下圖所示

public Test(){ // Constructor of the class 
    fileInfo = new String[10]; // here 10 is taken as any constant 
} 
1

因爲你沒有初始化fileInfo初始化

private String[] fileInfo; 
類的

寫:

String[] fileInfo = new String[100];

,你的代碼將無法正常工作。但在這種情況下,您必須決定陣列長度(10))。你可以做得更好。爲什麼你需要tmp?你說:

fileInfo = file.split("\\.");

,一切都將工作