[RESOLVIDO]Queue -java.lang.NullPointerException

3 respostas
Jemerson

Senhores,
Vocês poderiam me fornecer uma consultoria?
Estou tentando implementar o algoritmo busca em largura,mas me deparei com um erro,java.lang.NullPointerException,
me informando que estou apontando para um objeto que não existe.Veja minha implementação:

public void buscaLargura(Vertice inicial) {
        LinkedList<Vertice> visitados = new LinkedList<Vertice>();
        //java exigiu que inicializasse a fila.
        Queue<Vertice> paraVisitar = null;
        //adiciono meu vertice inicial a fila
        paraVisitar.offer(inicial);

        while (!paraVisitar.isEmpty()) {
            Vertice v = paraVisitar.poll();
            paraVisitar.offer(v);

            if (!visitados.contains(v)) {
                System.out.println(v.getNome());
                visitados.add(v);
            }

            for (Aresta a : v.getArestas()) {
                //a.getDestino() retorna um vértice
                paraVisitar.offer(a.getDestino());

            }

        }

    }

O problema que ele aponta é na linha 6.
Para ver se havia algum problema com as minhas classes vertice e aresta, resolvi implementar uma classe elemento e uma classe fila para substituir o Queue do Java.Após testar a fila que criei,o algoritmo busca em largura funcionou…

public void buscaLargura(Vertice inicial) {
        LinkedList<Vertice> visitados = new LinkedList<Vertice>();
        Fila paraVisitar = new Fila();
        paraVisitar.add(inicial);

        while (!paraVisitar.isEmpty()) {

            Vertice v = paraVisitar.rmv();


            if (!visitados.contains(v)) {
                System.out.println(v.getNome());
                visitados.add(v);
            }
            for (Aresta a : v.getArestas()) {

                paraVisitar.add(a.getDestino());
            }


        }


    }

Alguém de vocês possue um bom material relativo aos métodos que o Queue possui para que eu possa dar uma estudada?
Desde já agradeço.

3 Respostas

brunorota

tem o java doc dele

http://download.oracle.com/javase/6/docs/api/java/util/Queue.html

maior_abandonado

Jemerson:
Senhores,
Vocês poderiam me fornecer uma consultoria?
Estou tentando implementar o algoritmo busca em largura,mas me deparei com um erro,java.lang.NullPointerException,
me informando que estou apontando para um objeto que não existe.Veja minha implementação:

public void buscaLargura(Vertice inicial) {
        LinkedList<Vertice> visitados = new LinkedList<Vertice>();
        //java exigiu que inicializasse a fila.
        Queue<Vertice> paraVisitar = null;
        //adiciono meu vertice inicial a fila
        paraVisitar.offer(inicial);

        while (!paraVisitar.isEmpty()) {
            Vertice v = paraVisitar.poll();
            paraVisitar.offer(v);

            if (!visitados.contains(v)) {
                System.out.println(v.getNome());
                visitados.add(v);
            }

            for (Aresta a : v.getArestas()) {
                //a.getDestino() retorna um vértice
                paraVisitar.offer(a.getDestino());

            }

        }

    }

O problema que ele aponta é na linha 6.
Para ver se havia algum problema com as minhas classes vertice e aresta, resolvi implementar uma classe elemento e uma classe fila para substituir o Queue do Java.Após testar a fila que criei,o algoritmo busca em largura funcionou…

public void buscaLargura(Vertice inicial) {
        LinkedList<Vertice> visitados = new LinkedList<Vertice>();
        Fila paraVisitar = new Fila();
        paraVisitar.add(inicial);

        while (!paraVisitar.isEmpty()) {

            Vertice v = paraVisitar.rmv();


            if (!visitados.contains(v)) {
                System.out.println(v.getNome());
                visitados.add(v);
            }
            for (Aresta a : v.getArestas()) {

                paraVisitar.add(a.getDestino());
            }


        }


    }

Alguém de vocês possue um bom material relativo aos métodos que o Queue possui para que eu possa dar uma estudada?
Desde já agradeço.

A queue que você criou na linha anterior está inicializada com null, por isso deu null pointer…

quanto a como usar, Queue é uma interface, as classes mais conhecidas que a implementam são PriorityQueue e LinkedList. Basicamente uma fila, os seus métodos mais usados são o peek e o pool… da uma googlada, usa a doc que o amigo acima linkou…

Jemerson
Obrigado pela ajuda senhores.. Modifiquei a inialização da Queue e funcionou.
public void buscaLargura(Vertice inicial) {
        Queue<Vertice> paraVisitar = new LinkedList<Vertice>();
        paraVisitar.offer(inicial);

        while (!paraVisitar.isEmpty()) {
            Vertice v = paraVisitar.poll();
            paraVisitar.offer(v);

            if (!visitados.contains(v)) {
                System.out.println(v.getNome());
                visitados.add(v);
            }
            for (Aresta a : v.getArestas()) {
                paraVisitar.offer(a.getDestino());

            }
        }
    }

Abraços.

Criado 13 de maio de 2011
Ultima resposta 13 de mai. de 2011
Respostas 3
Participantes 3