Je travaille avec une file d'attente prioritaire en Java pour la première fois et je ne peux pas, pour la vie de moi, comprendre ce que je fais qui mène à l'exception. J'essaye de mettre en application une solution de type de fourmi de colonie au problème de voyageur de commerce. Ce qui suit est le seul code appelé pour ma classe AntColony.PriorityQueue poll() lancer NullPointerException
public AntColony(TSPInstance p) {
PriorityQueue<Ant> ants = new PriorityQueue<Ant>(new AntComparator());
size = p.getDimension();
for (int i = 0; i < size; i++) {
ants.offer(new Ant(p));
}
shortestTour = Integer.MAX_VALUE;
}
public void nextMove() {
ants.poll();
}
Le code que j'exécute juste après comme test est le suivant (juste dans une méthode principale).
AntColony a = new AntColony(p);
a.nextMove();
Le a.nextMove() lance une NullPointerException à la partie ants.poll(), mais encore si je change le constructeur à (à des fins de débogage)
public AntColony(TSPInstance p) {
PriorityQueue<Ant> ants = new PriorityQueue<Ant>(new AntComparator());
size = p.getDimension();
for (int i = 0; i < size; i++) {
ants.offer(new Ant(p));
}
ants.poll(); //ADDED THIS
shortestTour = Integer.MAX_VALUE;
}
puis juste faire
AntColony a = new AntColony(p);
Je ne reçois pas d'exception. J'ai du mal à comprendre comment je reçois une exception de ants.poll(), mais quand je l'appelle du constructeur, tout fonctionne. Toute aide avec ceci serait appréciée. Il y a beaucoup de code pour diverses choses dans ce projet, donc je ne pensais pas que le télécharger aiderait tout le monde alors faites moi savoir s'il y a quelque chose que je devrais inclure, mais je ne vois pas comment le problème pourrait sortir de ces deux de code.
Ajouté: exception réelle
Exception in thread "main" java.lang.NullPointerException
at data_structures.AntColony.nextMove(AntColony.java:25) (the ants.poll() part)
at algorithms.ACTest.main(ACTest.java:6) The a.nextMove() part
Pourriez-vous partager l'exception que vous obtenez? – fiskra
Il semble que vous n'avez pas déclaré 'ants' dans votre méthode' nextMove' ou au niveau de la classe. – alayor
Copie possible de [Qu'est-ce qu'une exception NullPointerException, et comment la réparer?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –