2015-01-03 4 views
0

아직도 OOP를 배우기 시작하고 있는데 내 코드에서 계속 튀어 나오는이 오류가 있습니다. 라고 Exception in thread "main" java.lang.NullPointerExceptionNullPointerException java 오류

public class SlumbookDriver{ 
    public static void main(String args[]){ 
     Slumbook[] contacts = new Slumbook[19]; 
     ... // index is an int and is the value of the index of the array 
     ... // i feed it to a function "void viewEntry" that just shows 
      // the other attributes of the class Slumbook 
     viewEntry(index, contacts); 
    } 
} 

는 당신이 당신이 액세스 할 때 당신이 NullPointerException을 얻을 것이다

Slumbook[] contacts = new Slumbook[19]; 

아닌 요소 따라서 배열을 초기화하는

public static void viewEntry(int index, Slumbook[] contacts){ 
    Scanner sc = new Scanner(System.in); 
    if(index == 0){ 
     System.out.println("Array is empty"); 
    } 
    else{ 
     String id = contacts[index].getIdNo(); 
     System.out.println("Please enter ID number"); 
     String idNo = sc.next();  
     if(id != idNo){ 
      while(id != idNo && index != -1){ 
       index--; 
       id = contacts[index].getIdNo(); 
      } 
      if(index == -1){ 
       System.out.println("ID does not exist"); 
       return; //terminate action since the ID number does not exist 
      } 
     } 
     System.out.println(contacts[index].viewDetails()); 
    } 
} 
+0

당신이 스택뿐만 아니라, 코드의 자세한 내용을 게시 할 수 발생한 위치가 포함되어있는 경우 추적은 예외로 인쇄 되었습니까? 문제를 정확하게 지적하는 데 도움이됩니다. – Malt

답변

2

기능 viewEntry을 가지고 배열 요소는 다음과 같은 문장으로 표현됩니다.

String id = contacts[index].getIdNo(); 

개체 배열을 만들 때 배열 내의 개체는 초기화되지 않으므로 사용하기 전에 new 연산자를 사용하여 개체를 초기화해야합니다. 다음과 같은 것 :

contacts[index] = new Slumbook(); 
+0

예 이미 배열에 다른 함수의 객체를 채우기 위해이 작업을 수행했지만 여전히 오류가 계속 발생하고 있습니다. – user253938

+0

@ user253938 그러면 적절한 참조를 보유하지 못할 수 있습니다. 완전한 코드를 게시하십시오. –

+0

감사하지만 그것은 오류가 단지 인덱스가 0이 될 때마다 튀어 나오는 것처럼 보입니다. (나는 왜 그런 일이 일어나고 있는지 알지 못합니다, 연락처 [0]은 값을 할당 했으므로 NULL이 될 수 없습니다) 그래서 그냥 그것을 예약했습니다. 연락처 [0] 비어, 프로그램 밖으로두고 콘택트 [1]에 대한 배열로 시작, 지금은 완벽하게 실행 중입니다 – user253938

0

여기서 문제는 배열의 내용을 초기화해야하지만 SlumBook 배열을 초기화했다는 것입니다. viewEntry(int, SlumBook[])

0

NullPointerException 당신은 필드 또는 참조의 방법을 액세스 할 때 발생하는 방법에 연락처를 사용하기 전에

for (int i = 0; i < contacts.length; i++) 
{ 
    contacts[i] = new SlumBook(); 
} 

는이 작업을 수행하지만, 해당 참조가 null : 는 우선, 단지 내용을 초기화 . 당신이 배열

Slumbook [] data = new Slumbook[N]; 
data[i].getIdNo(); /// NPE 

위치 i에 포함 된 참조가 null로 발생하는 경우 NPE를 슬로우 두 번째 예제가있는 경우

Slumbook a = null; 
a.getIdNo(); // NullPointerException 

같은 예를 들어

발생합니다.

당신은 스택 추적이 표시되는 예외를 얻을 수 있으며 파일 이름과 정확한 행 번호를 (대부분의 시간)을 제외하고는