2013-04-28 4 views
0

프로그램을 컴파일 할 때 문제가 없지만 프로그램을 실행하려고하면 NullPointerException이 발생합니다. 왜 내가 이것을 가지고 있는지, 그리고 이것을 어떻게 없앨 수 있는지 전혀 모른다. 나는이 문제를 해결하는 방법을 정말 잘 모르겠어요대기열 isEmpty 문제 해결

public class TheChair { 
    private Customer[] chairQueue = null; 

    public void TheChair(){ 
     chairQueue = new Customer[1]; 
    } 

    public void enchairQueue(Customer newItem){ 
     if(chairQueue[0] == null){ 
      chairQueue[0] = newItem; 
     } 
     else{ 
      System.out.println("The chair is full."); 
     } 
    } 

    public void dechairQueue(){ 
     System.out.println(chairQueue[0].getName() + " has left"); 
     chairQueue[0] = null; 
    } 

    public boolean isEmpty(){ 
     if(chairQueue[0] == null){ 
      System.out.println("The Barber's chair is empty"); 
      System.out.println(); 
      return true; 
     } else{ 
       System.out.println("The Barber's chair is filled by: "); 
       System.out.println(chairQueue[0].getName()); 
       return false; 
     } 
    } 

이 프로그램의 코드의 단지 작은 부분 :

public boolean isEmpty(){ 

코드 :

오류는이 라인에 있습니다.

+0

이것은 클래스 정의에 불과합니다. 또한 실행중인 단위 테스트 또는 응용 프로그램 코드를 포함시킬 수 있습니까? – Horus

+0

여기에 게시하는 코드가 너무 많아서 볼 수 있도록 링크를 설정합니다. http://www.mediafire.com/?x2oaxmz1fb866 – Jaylon253

답변

1

이 줄로 생성자를 만들려고합니까? 생성자는 반환 형식이 없으며으로 코딩해야하기 때문에 예, 다음이 당신의 목적을 위해 잘못된 코드 인 경우

public void TheChair(){ 
    chairQueue = new Customer[1]; 
} 

가 : 또한

public TheChair(){ 
    chairQueue = new Customer(1); 
} 

, 알이 새로운 고객 [1 ] "생성자"에서 Customer 개체를 만들지 않고 Customer라는 배열의 인덱싱을 시도합니다.

아니요 인 경우 인스턴스 변수 인 chairQueue가 인스턴스화되지 않았으므로 동일합니다.

그런 다음 적절한 생성자가 없으므로 인스턴스 변수 chairQueue가 전혀 초기화되지 않습니다. TheChair 클래스의 인스턴스로 isEmpty()를 호출하면 chairQueue 자체가 null입니다. 결과적으로 문에서 chairQueue [0]이 평가 될 때 NullPointerException을 던지는 null 객체 (포인터)를 인덱싱하려고합니다.

+0

귀하의 답변은 도움을 주셔서 감사합니다. – Jaylon253