2012-12-16 274 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("\\.");

,一切都将工作