Java.lang.NullPointerException

3 respostas
D

Alguém poderia me ajudar??? Está dando esta mensagem:

[color=blue]Exception in thread "main" java.lang.NullPointerException
at pointer_jumping.Pointer_Jumping.run(Pointer_Jumping.java:13)
at pointer_jumping.Tester.main(Tester.java:13)[/color]

Minhas classes são estas:

package pointer_jumping;
class Pointer_Jumping implements Runnable {
	
	private String threadName;
	private Arvore arv;
	
	public Pointer_Jumping(String name){
		threadName = name;
	}
	
	public void run(){
		for (int i=0; i< arv.parent.length; i++ ){
			while (arv.parent[i] != arv.parent[arv.parent[i]])
				arv.parent[i]= arv.parent[arv.parent[i]];
			arv.imprime(i);
		}
	}

}
package pointer_jumping;

import java.util.Scanner;
public class Arvore {

	// Vetor que representa uma árvore.
	int parent[];
	int num_vertices;
	
	Arvore(int tamanho) {
		parent = new int[tamanho];
		num_vertices = tamanho;
	}
	
	public void setParent(){
		for (int i=0; i < parent.length ;i++){
			System.out.println("Diga o vizinho do nó "+i+":");
			Scanner teclado = new Scanner(System.in);
			parent[i]= teclado.nextInt();
		}
	}
	
	public void imprime(int no){
		System.out.println("Nó "+no+ " possui vizinho "+parent[no]);
	}
}
package pointer_jumping;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Tester {

	
	public static void main(String[] args) {
		
		Arvore arv = new Arvore(6);
		Pointer_Jumping pj1 = new Pointer_Jumping("thread1");
		pj1.run();
	}
}

3 Respostas

P

o atributo “arv” da classe Pointer_Jumping não esta sendo inicializado antes de sua utilização

rafarcm

NullPointerException - Erro comum em java.

E simples de resolver na grande maioria dos casos

Sempre q der verifique se não existem objetos nulos ou não instanciados no seu código
:wink:

LPJava
arv.parent

o problema está ai… a variavel de instancia quando nao é do tipo primitivo ela é inicializada com null e vc nao pode usar o operador de . (ponto) com um variavel que referencia para null. Por isso que acontece essa exceção. Você pode fazer o seguinte:

public void run(){   
Arvore arv = new Arvore();
        for (int i=0; i< arv.parent.length; i++ ){   
            while (arv.parent[i] != arv.parent[arv.parent[i]])   
                arv.parent[i]= arv.parent[arv.parent[i]];   
            arv.imprime(i);   
        }   
    }   
  
}

e na classe Arvore crie um construtor Arvore (){}

é uma das formas de resolver o problema tb…

Criado 6 de novembro de 2007
Ultima resposta 6 de nov. de 2007
Respostas 3
Participantes 4