PriorityQueue

galera alguem poderia me ajudar com esse código, não conssigo entenderr

Queue<No> abertos = new PriorityQueue<No>(100, getNoComparatorF());

[code]public abstract class BuscaHeuristica extends Busca {

/** comparador para ordenar os nós por F */
Comparator<No> getNoComparatorF() {
	
    return new Comparator<No>() {
    	
        public int compare(No no1, No no2) {
            try {
            	
                int f1 = no1.f();
                int f2 = no2.f();
                
                if (f1 > f2) {
                    return 1;
                } else if (f1 == f2) {
                    return 0; 
                } else {
                    return -1;
                }
                
            } 
            catch (Exception e) {
                e.printStackTrace();
            }
            return 0;
        }
    };
}

}[/code]

ele gera um erro na seguinte linhas

if (f1 > f2) {

segue o erro

at br.com.tcc.busca.BuscaHeuristica$1.compare(BuscaHeuristica.java:16)

Você pode colocar a mensagem de erro completa?

Só a linha que o erro ocorreu não ajuda muito.

Ah! E você pode postar o código completo desse algoritmo A* num attachment zipado aqui?
Eu queria comparar com o meu. :slight_smile:

Alguns comentários:

  1. Pra que o try… catch?
  2. Se seus ifs dão um return, pra que tanto else?
  3. Pra que as variáveis temporárias?

O método não devia ficar curtinho assim?

[code]public abstract class BuscaHeuristica extends Busca {

/** comparador para ordenar os nós por F */  
Comparator<No> getNoComparatorF() {   
       
    return new Comparator<No>() {   
        public int compare(No no1, No no2) {   
           if (no1.f() &gt no2.f())
               return 1;   
           if (no1.f() == no2.f())
               return 0;
           return -1;   
        }   
    };
}

}[/code]

viniii sabe oq eu não intendooo!!!

pq que o metodo começa com return

tipo

[code]
return new Comparator() {
.
.
.
};

[code]

ME DAH SEU E-MAIL QUE EU TE MANDO MEU ALGORITMO