2012-12-16 4 views
-2

나는 java.lang.NullPointerException을 얻고 있지만 그 이유는 모르겠다.문자열 []에 자바 문자열 []

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'을 작동합니다. 이것은 C와는 다르다. 배열은 엄밀히 말하면 참조 형이다. C에서조차도'fileInfo []'의 크기를 절대 지정하지 않기 때문에 코드가 깨질 수 있습니다. –

+2

인쇄하기 전에 3 줄의 오류가 있습니까? 배열 요소에 대한 할당은 어디에서 이루어 집니까? – Bohemian

답변

2

fileInfo 어레이를 초기화해야합니다.

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

당신은 당신이 fileInfo를 초기화하지 않았기 때문에

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

아래와 같이 클래스의

private String[] fileInfo; 

를 초기화해야합니다.

쓰기 :

String[] fileInfo = new String[100];

와 코드가 작동하지 않습니다. 그러나이 경우 배열 길이 (10)를 결정해야합니다. 넌 더 잘할 수있어. 왜 tmp이 필요합니까? 말 : 당신이 그것을 내로 arary의 인스턴스를 할당하지 않았기 때문에

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

모든 것이