我正在首次使用Java中的优先级队列,而且我无法理解我正在做什么导致异常。我试图对旅行商问题实施蚁群类型解决方案。以下是为我的AntColony类调用的唯一代码。PriorityQueue poll()抛出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();
}
我后来运行的代码就像测试一样,只是在一个主要方法中。
AntColony a = new AntColony(p);
a.nextMove();
的a.nextMove()在ants.poll()部分抛出一个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));
}
ants.poll(); //ADDED THIS
shortestTour = Integer.MAX_VALUE;
}
,然后就做
AntColony a = new AntColony(p);
我没有得到异常。我很努力地理解我是如何从ants.poll()中获得一个异常的,但是当我从构造函数中调用它时,一切正常。任何帮助,这将不胜感激。在这个项目中有很多代码用于各种事情,所以我不认为上传这些代码会帮助任何人,让我知道是否应该包括我应该包括的内容,但是我不明白这两个位之外的问题可能会如何解决的代码。
补充:实际的异常
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
你能分享你得到的异常吗? – fiskra
看起来你没有在你的'nextMove'方法或类级别声明'ants'。 – alayor
可能的重复[什么是NullPointerException,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) –