NullPointerException в очереди - PullRequest
       13

NullPointerException в очереди

0 голосов
/ 30 октября 2011

Я реализовал некоторый код, включающий очереди, и во время его выполнения я получаю исключение NullPointerException. Пожалуйста, помогите мне исправить это. Я пишу только более короткую форму этого кода.

import java.util.*;
class ex
{
public static void main(String args[])throws IOException
{

    Scanner in=new Scanner(System.in);
    int i;
    String s;
    int n=in.nextInt();

    Queue<Integer> q=null;
    for(i=0;i<n;i++)
    {
        q.add(i);//I get the error in this line
    }
    System.out.println(q.size());
} 
}

Ответы [ 6 ]

2 голосов
/ 30 октября 2011

Вы получаете NPE, потому что q равен null.

Вам необходимо создать объект, прежде чем вы сможете его использовать, например:

Queue<Integer> q = new LinkedList<Integer>();

Здесьмы выбрали LinkedList как класс, реализующий интерфейс Queue.Есть много других: см. Раздел «Все известные классы реализации» в Queue javadoc .

2 голосов
/ 30 октября 2011

Вы должны сначала инициализировать очередь:

Queue<Integer> q=null;

Должно быть:

Queue<Integer> q = new Queue<Integer>();

Причина ошибки в том, что вы пытаетесь добавить значения к q. q устанавливается только для типа Queue<Integer> и не является ссылкой на объект самого этого типа.

1 голос
/ 30 октября 2011
Queue<Integer> q = null;

Ну ... это null и:

 q.add(i);

Там вы пытаетесь его использовать.Ergo, Exception.

Вам необходимо создать экземпляр объекта, чтобы иметь объект, который вы можете использовать:

Queue<Integer> q = new Queue<Integer>();

Если это не простая опечатка /упущение, вы можете начать с начала обучающих программ по Java, предоставляемых Oracle, или получить книгу типа «Изучение Java», прежде чем заняться чем-то более сложным.

0 голосов
/ 30 октября 2011

Вам нужно инициализировать q

Queue<Integer> q = new AbstractQueue<Integer>();
0 голосов
/ 30 октября 2011

Это происходит потому, что q равно null.Вам нужно инициализировать его чем-то, прежде чем вы сможете его использовать, например:

 Queue<Integer> q = new AbstractQueue<Integer>();

Некоторые подробности и примеры см .:

0 голосов
/ 30 октября 2011
Queue<Integer> q=null;
...
q.add(i);//I get the error in this line

Ваша ссылка Queue равна null, поэтому вы получаете NullPointerException при попытке доступа к ней. Перед использованием q должен указать на что-то действительное, например:

Queue<Integer> q = new Queue<Integer>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...