2015-01-21 4 views
1

, когда я запустить свою программу из главного я получаю ошибку на этой линии: частного класс Nodejava.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(), head имеет значение NULL, но ее обрабатывают так, как будто это не так. Мне нужен способ сделать связанный список круговым при добавлении данных. –

+0

Чтобы сделать его круговым, после добавления нового узла в конец - сделайте его рядом с точкой в ​​голове: перед 'size ++;' добавьте строку: 'temp.next = head;' – alfasin

Смежные вопросы