2015-01-21 4 views
1

나는이 라인에 오류 얻을 주에서 내 프로그램을 실행 개인 클래스 노드를java.lang.NullPointerException 오류, 어떻게 수정합니까?

나는 다음 방법 중 무리 (여기에 표시된 첫 번째 일)과과 (원형) 연결리스트 클래스가 별도의 메인. 이 문제의 원인을 알고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사. 내가 발견 할 수

public class CircleGame 
    { 
     //Node class (inner class) 
     private class Node 
     { 
      private int data; 
      private Node next; 

      //constructor of Node 
      private Node(int data, Node next) 
      { 
       this.data = data; 
       this.next = next; 

      } 
     } 

     /****************************************************/ 

     private Node head; 
     int size =0; 
     int k = 0; 
     int s = 0; 

     //constructor of list 
     public CircleGame() 
     { 
      head = null; 

     } 

     /****************************************************/ 

     public void addToEnd(int data) 
     { 
      //insert at beginning 
      if (head == null) 
       head = new Node(data, null); 

      //insert at other positions 
      else 
      { Node temp = head; 
       int i=0; 
       while(i <size) 
       { 
        temp = temp.next; 
        temp.next = new Node(data, head); 

        i++; 
       } 
      } 

      size ++; 
     } 

     /**************************************************/ 

    //main 
    import java.util.*; 

public class CircleGameMain 
{ 
    public static void main (String [] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 
     CircleGame game = new CircleGame(); 

     System.out.println("***********WELCOME TO The CIRCLE GAME************"); 
     System.out.print("How many players are in the circle? "); 
     int size = keyboard.nextInt(); 
     System.out.println(); 
     int data; 

     for(int i = 0; i < size; i++) 
     { 
      data = i+1; 
      game.addToEnd(data); 
     } 

     game.print(); 
     System.out.print("What position would you like to start at? "); 
     int s = keyboard.nextInt(); 
     System.out.println(); 

     System.out.print("Eliminate the kth player. k= ? "); 
     int k =keyboard.nextInt(); 
     System.out.println(); 
     game.game(s,k); 

    } 
} 
+0

1. 모든 코드를 게시하지 않았습니다. 2. 전체 오류 및 스택 추적을 게시하지 않았습니다. – alfasin

+0

방금 ​​내 메인을 게시했습니다 –

+0

당신은 모든 코드를 게시하지 않았고,'game()'과'print()'를 놓쳤습니다. – alfasin

답변

1

한 버그는 다음 줄 것입니다 :

temp.next = new Node(data, head); 

바로 while 루프 후에 실행해야 - 아니 그 안에!

+0

나는 문제가 addToEnd()에있는 것 같아, 머리가 null이지만 그것이 아닌 것처럼 취급되고있다. 데이터를 추가하는 동안 링크 된 목록을 원형으로 만드는 방법이 필요합니다. –

+0

원형으로 만들려면 끝에 새 노드를 추가 한 후 'size ++'이전에 다음 노드를 가리 키도록 만듭니다.'temp.next = head;' – alfasin

관련 문제