2013-04-07 3 views
0

이것은 내 첫 번째 게시물입니다. 나는 단 하나 연결 명부를 창조하는 것을 시도하고있다. 나는 목록의 끝이나 처음에 값을 삽입하고 display 메서드를 사용하여 모든 값을 인쇄하는 방법으로 AtEndAtStart 메서드를 사용하고 있습니다. 삽입 메서드는 잘 작동하고있는 것 같습니다 (적어도 그렇게 생각합니다). 그러나 표시 메서드를 호출 할 때마다 첫 번째 값만 표시되고 null 포인터 예외가 발생합니다. 예를 들어이 코드를 실행하면 9가 표시되고 "not null"에 대한 표시 방법을 확인 했음에도 불구하고 NPE가 표시됩니다. 내가 당신의 AtStart 기능이 무엇을 얻을 해달라고런타임시 null 포인터 예외

class node { 
    private int data; 
    private node next; 

    node() { 

    } 

    node(int data) { 
     this.data = data; 
     this.next = null; 
    } 
    public int getData() { 
     return data; 
    } 

    public void setData(int data) { 
     this.data=data; 
    } 

    public node getNext() { 
     return next; 
    } 

    public void setNext(node next) { 
     this.next = next; 
    } 
} 

public class list extends node { 
    node head; 
    list() { 

    } 

    public void AtStart(int val) { 
     node n = new node(val); 
     if (head == null) { 
      head=n; 
     } else { 
      n.setNext(head); 
      int temp = head.getData(); 
      head.setData(val); 
      n.setData(temp); 
      //n = head; 
     } 
    } 

    public void AtEnd(int val) { 
     if (head == null) { 
      node n = new node(val); 
      head = n; 
    } else { 
      node t = head; 
      for(; t.getNext() != null;) { 
       if(t.getNext() == null) { 
        t.setNext(new node (val)); 
       } 
       t = t.getNext(); 
      } 
     } 
    } 

    public void display() { 
     node t = head; 
     for(; t.getNext() == null;) { 
      if (t !=null) { 
       System.out.println(t.getData()); 
       t = t.getNext(); 
      } 
     } 
    } 
} 


public static void main(String args[]) { 
    list l = new list(); 
    l.AtStart(16); 
    l.AtEnd(6); 
    l.AtEnd(36); 
    l.AtStart(9); 
    l.AtEnd(22); 
    l.display(); 
} 
+2

난이 있으리라 믿고있어 자바입니다. 언어로 태그를 달아주세요. 무슨 말을하고 있는지 알 수 있습니다. 또한 가난한 들여 쓰기를 사과하는 대신, 그냥 고쳐야합니다 !! –

+0

또한, NullPointerException에 대한 질문은 수천 개는 아니지만 수천 개가 넘는 질문이있었습니다. 왜냐하면 이들 모두가 같은 솔루션으로 진행되기 때문입니다. ** 코드 디버그 **. 그것은 단순히 배울 수있는 개발의 일부입니다. 또한 [** null 포인터 참고 사항은 무엇입니까? **] (** http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception) –

+1

코드 형식을 지정하는 시간이 필요합니다. 변명의 텍스트를 핑계로 게시하는 것. – oleksii

답변

0

, 그것은 훨씬 더 간단해야한다 :

public void AtStart(int val){ 
if(head==null){ 
head=n; 
} 
else{ 
head.setnext(head); 
head.setData(val); 
} 
}