[RESOLVIDO] - GRAFOS erro no método profundidade

6 respostas
felipehts

Bom estou fazendo um programa para Grafos, e me deparei com um problema no método profundidade, segue o método criado:

public void profundidade(int v) {
        visitado[v] = true; // ERRO APONTANDO PARA ESTÁ PARTE DO CÓDIGO
        for (int i = 0; i < n; i++) {
            if (matAdj[v][i] != 0 && !visitado[i]) {
                // getVertice(i).setCor(Color.GREEN);
                profundidade(i);
            }
        }

    }

para testar o método acima utilizei o seguinte parâmetro:

if (e.getSource() == mProfundidade) {                  
                       g.profundidade(1); // passei o número 1 como base para testar o código
		}

Porém está apresentando erro, apontando para linha: " visitado[v] = true;", não sei o motivo para tal erro, alguém poderia me ajudar ??? agradeço desde já…vlw

ERRO APRESENTADO:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Grafo.Grafo.profundidade(Grafo.java:78 )

6 Respostas

adriano_si

cara… é como se não tivesse um Objeto criado para o visitado… posta todo o código da classe Grafo…

felipehts

O código ainda está em fase inicial, mas segue abaixo sua estrutura:

public class Grafo extends GrafoBase {

    public int matAdj[][];
    public int n;
    public boolean visitado[];

    public void addAresta(int i, int j, int p) {
        matAdj[i][j] = p;
        matAdj[j][i] = p;
    }

    public void remAresta(int i, int j) {
        addAresta(i, j, 0);
    }

    public void AGM(int v) {
    }

    public void caminhoMinimo(int i, int j) {
    }

    public void completarGrafo() {
    }

    public boolean isEuleriano() {
        for (int i = 0; i < getN(); i++) {
            if (this.grau(i) % 2 != 0) {
                return false;
            }
        }
        return true;
    }

    public boolean isUnicursal() {
        int i, cont = 0;
        for (i = 0; i < n; i++) {
            cont += grau(i) % 2;

        }
        return cont == 2;


    }

    public void largura(int v) {
        Fila f = new Fila();
        f.enfileirar(v);
        while (!f.vazia()) {
            v = f.desenfileirar();
            visitado[v] = true;
            for (int i = 0; i < n; i++) {
                if (matAdj[v][i] != 0 && !visitado[i]) {
                    visitado[i] = true;
                    f.enfileirar(i);

                }
            }

        }

    }

    public void numeroCromatico() {
    }

    public String paresOrdenados() {
        //getVertice(2).setCor(Color.GREEN);

        return "";
    }

    public void profundidade(int v) {
        visitado[v] = true;
        for (int i = 0; i < n; i++) {
            if (matAdj[v][i] != 0 && !visitado[i]) {
                // getVertice(i).setCor(Color.GREEN);
                System.out.println(matAdj[v][i]);
                profundidade(i);
            }
        }

    }
}
adriano_si

Pois bem… como eu disse…

Aqui crias um Array(que é um Objeto no heap)…

public boolean visitado[];

Mas esse cara não é inicializado em lugar nenhum… Logo dá NullPointer

Experimenta assim…

public boolean visitado[] = new boolean[10];

e roda de novo… Não olhei o resto do código, pode ter erros em outros lugares…

felipehts

adriano_si:
Pois bem… como eu disse…

Aqui crias um Array(que é um Objeto no heap)…

public boolean visitado[];

Mas esse cara não é inicializado em lugar nenhum… Logo dá NullPointer

Experimenta assim…

public boolean visitado[] = new boolean[10];

e roda de novo… Não olhei o resto do código, pode ter erros em outros lugares…

adriano_si

cara… coloca um RESOLVIDO aí no título do Post…

Abraços 8)

felipehts

tinha me esquecido…

Criado 25 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 6
Participantes 2