2012-04-02 2 views
0

여기에 누락 된 것이 있습니다. 이 코드로 내가 얻을 java.lang.NullPointerException : 객체의 배열을 채울 때 java.lang.NullPointerException이 발생했습니다.

public static void main(String[] args) { 

    Board board = new Board(); 
    board.Initialise(); 

} 


public class Board { 

private Obj[][] tableau; 

public void Board() { 

    tableau = new Obj[8][8];  
} 

public void Fill_Board() { 

    tableau[0][0]= new Obj('B'); 
    } 
} 

하지만 다른 코드로 내가 오류를 얻을

. 내가 뭘 잘못하고, 개체의 배열을 제대로 초기화하는 방법?

public class Board { 

private Obj[][] tableau = new Obj[8][8]; 

public void Board() { 

} 

public void Fill_Board() { 

    tableau[0][0]= new Obj('B'); 
    } 
} 
+1

클래스 탭이있어서 main()에서 사용하지 않기 때문에 더 많은 컨텍스트를 제공해야한다고 생각합니다. –

+0

@ TerraNova993 사람들이 코드를 읽을 수 있도록 만든 편집 내용의 서식을 해제하는 이유는 무엇입니까? – jzworkman

답변

2

Board()는 멤버 함수가 아닌 생성자 인 끝, 따라서 호출되지 없구요. 아마도 당신이 주요 방법으로 좀 더 구체적인 예를 제공 할 수 있습니다, 나는 (실제 클래스의 Obj 변경)이 코드를 실행하면

public Board() { /* removed the `void' */ 
    tableau = new Obj[8][8];  
} 
+1

'Board'클래스는 없습니다. – Makoto

+0

대단히 감사합니다! – TerraNova993

+0

@Makoto : 명확하게 ('이사회 = 새 이사회() '). 우리가 제시 한 내용은 미리보기입니다.'Board() '가'탭 '에 나타나지 않는 것으로 보이고 - 이사회가 아니라 - 이것이 스 니펫이라는 인공물 일뿐입니다. – NPE

0

내가 오류를 얻을 : 문제는 제거 할 필요가 void 키워드입니다 네가하려는 일 중?

생성자를 만들려면 클래스와 동일한 이름 (예 : Tab)이어야하며 반환 유형이 없어야합니다.

그래서 당신은 추가해야합니다 : 당신은 그 클래스의 새 인스턴스를 만들 때마다

public Tab() { 
    // initialization code here 
} 

당신이있는 거 생성자가 실행됩니다. 모든 변수를 초기화하는 데이 변수를 사용하려고합니다.

Tab t = new Tab(); // Constructor runs 

편집 :

당신은 주요 방법입니다 클래스 Board를 사용하지만 당신은 우리에게 Tab라는 클래스를 제공했다. 위의 예에서 TabBoard으로 바꿔야한다고 생각할 수 있습니다.

+0

thnaks, 문제는 생성자에 void가있어서 적절한 생성자를 만들기 위해 void가 삭제되어 작동했습니다. – TerraNova993

관련 문제