Java - получение исключения NullPointerException при предложении объекта в LinkedList - PullRequest
0 голосов
/ 22 ноября 2011

Вероятно, есть простое решение этой проблемы, которое у меня было всю ночь.По крайней мере, я надеюсь, что есть.При попытке предложить объект моему LinkedList subQueues я получаю исключение NullPointerException.Моя программа выводит правильные объекты "head" и целые числа "цифры", но затем выдается исключение и программа завершается.

Короче говоря, моя программа должна взять из списка целых списков mainQueue LinkedList, просмотреть их все один за другим и отсортировать.Он исследует последнюю цифру каждого целого и помещает их в соответствующие подкоманды.На данный момент я только в одном месте.После того, как я преодолею эту дилемму, я смогу решить десятки, сотни и т.д.Как я уже сказал, как только я справлюсь с этой маленькой проблемой, остальная часть программы должна быть легкой.Любая помощь приветствуется, спасибо!

public class Sorting
 {
   private LinkedList mainQueue;
   private LinkedList[] subQueues;
   private final int SIZE = 10;
   private int maxDigits; //maximum number of digits

   //The constructor instantiates the mainQueue using the LinkedList,
   //subQueue array as an array of LinkedList using SIZE(10),
   //and initializes maxDigits = 0;
   public Sorting()
   {
    mainQueue = new LinkedList();
    for (int i=0; i<SIZE; i++)
    {
        subQueues = new LinkedList[i];
    }

    // I have also tried:
    // subQueues = new LinkedList[SIZE];   
    //I get the same runtime error.

    maxDigits = 0;
 }

   public void sortNumbers()
    {
    while (mainQueue.isEmpty() == false)
    {
        Object head = mainQueue.peek();
        mainQueue.remove();
        String digitLine = "" + head;
        int digit = Integer.parseInt(digitLine.substring(digitLine.length()-1, digitLine.length()));

        System.out.println(head);
        System.out.println(digit);

        subQueues[digit].offer(head);
    }
    }
}

1 Ответ

5 голосов
/ 22 ноября 2011

Вы неправильно строите свой subQueues, похоже.Если вам нужен массив SIZE связанных списков, попробуйте следующее:

subQueues = new LinkedList[ SIZE ];
for ( int i = 0; i < SIZE; ++i ) {
    subQueues[i] = new LinkedList();
}

Обратите внимание, что в этом коде используются необработанные типы, хотя предпочтительно использовать параметризованные типы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...