我正在首次使用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 ) –