2013-05-28 2 views
0

CD 객체를 CD의 ArrayList의 Band 객체의 ArrayList 멤버 필드에 추가하려고합니다. band_index는 콤보 박스에서 선택 될 때 Band ArrayList의 인덱스이며, band_index가 선택된 밴드의 올바른 인덱스를 할당하는지 확인했습니다. 현재 코드의 addCD 메소드를 호출 할 때이 코드 행 band.get(band_index).addCD(cd);에 널 포인터 예외가 발생합니다.클래스 내의 Arraylists Java

Main 클래스 :

public void addCD() { 
    CD cd = new CD(t, y); 

    band.get(band_index).addCD(cd); //NULL pointer Exception on this line 
      updateCDs(); 
} 

//Method to print out all the CDs of a band 
public void updateCDs() { 
    String list = ""; 
    for(int i = 0; i < band.size(); i++) 
    { 
      //band_index is the index of the selected band in the combobox  
      if(i == band_index) { 
      for(int j = 0; j < band.get(i).getCDs().size(); j++) { 
       list += "Title: " + band.get(i).getCDs().get(j).getTitle(); 
       list += "Year: " + band.get(i).getCDs().get(j).getYear(); 
      } 
     } 
    } 
    System.out.println(list); 
} 

밴드 클래스 :

private ArrayList<CD> cds; 

public void addCD(CD cd) { 
    cds.add(cd); 
} 

CD 클래스 :

private String title; 
private int year; 

public CD(String t, int y) { 
    title = t; 
    year = y; 
} 

public getTitle() { return title; } 
public getYear() { return year; } 
+1

'band.get (band_index)'의 기능은 무엇입니까? 'private' 초기화 ArrayList cds = new ArrayList <>();' – NINCOMPOOP

+0

어디에서'band'를 초기화합니까? –

+0

감사합니다. 난 그걸 깜빡 했군 – user1352609

답변

6

당신의 cds은 null입니다. BTW

private List<CD> cds = new ArrayList<CD>(); 

public void addCD(CD cd) { 
    cds.add(cd); 
} 

:

이보십시오. 아마 밴드도 null입니다. 이를 결정할 수있는 소스 코드가 충분하지 않습니다.

+0

단순한 실수였습니다. CD를 초기화하는 걸 잊었 ... 감사 – user1352609