Boa noite pessoal…
Estou tentando implementar um algoritmo de menor caminho (Algoritmo de Dijkstra) mas estou encontrando um erro… já revirei várias páginas e fóruns mas nada… o lugar onde está dando o erro, está com uma <—… e é o famoso java.lang.NullPointerException.
Alguém tem alguma luz?
[code]
public class Algoritmo extends Matriz {
public float dv[]; //vetor com os pesos
public int vet[]; // vetor com o caminho
public int x; // contador
public int y; // contador
public int cont = 1; // contador conjunto U
public int loc; // localizador conjunto U
//int lista[]; // recebe menor caminho para impressao
public int vx; // vertice atual
public int du; // peso do vertice anterior
public int uTem; // testa se é adjacente
public int u[]; // U Posiçao
public int z;// u Peso
public float menor_d; // menor distancia
public float[] getDv() {
return dv;
}
public void setDv(float[] dv) {
this.dv = dv;
}
public int[] getVet() {
return vet;
}
public void setVet(int[] vet) {
this.vet = vet;
}
public Algoritmo(){
for(x = 0; x<getQtdv(); x++){
vet[x] = -1;
dv[x] = Integer.MAX_VALUE;
} // fecha for
dv[getVo()] = 0;
u[0] = getVo();
z = getVo();
}// fecha construtor
{
do{
for(x=0; x<getQtdv();x++){
if((vx!=z) && (matriz[z][x]!=0) && (vx!=u[x])&&(dv[x]>du+(matriz[z][vx]))){ //precisa incrementar o calculo Dvi, pois esse dv[x] segnifica D(vi)
dv[x] = du + matriz[z][vx];
vet[x] = z;
}
}// fecha for 1
menor_d = Integer.MAX_VALUE;
for(x=0; x<getQtdv();x++){
if((testaU()!=0) && (dv[x]<menor_d)){
menor_d = dv[x];
z = vx;
}
uTem = 0;
}// fecha for 2
u[1] = 1; <---- ERRO AQUI
cont = cont+1;
}while(z == getVd());}
public int testaU() {
for(x=0;x<getQtdv();x++){
if(u[x]!=0){
uTem = u[x];}
}
return uTem;
}
public int[] getU() {
return u;
}
}// fim da classe[/code]