我試圖寫一段代碼,可以讓人們增加約到不同的地震數據運行不同的觀測站,並允許您提取有關它們的數據。我不明白爲什麼我得到一個顯示java.lang.NullPointerException錯誤消息,當我通過我的IO
當我運行終端時,我可以添加天文臺,但是當涉及到添加地震並將它們放入特定天文臺時,我得到一個java.lang.Nullpointerexception錯誤。
public void AddQuake(String name, int magnitude, int latitude, int longitude, int year) {
Observatory myObservatory = getObservatory(name);
// specify an observatory to store it in every time a quake is created.
Earthquake currentQuake = (new Earthquake(name, magnitude, latitude, longitude, year)); //setting local variable
allQuakes.add(currentQuake); //adding to arraylist
if (currentQuake.GetMagnitude() > 4) {
bigQuakes.add(currentQuake);
}
if (currentQuake.GetMagnitude() >= biggestMagnitudeEver) {
biggestQuakeEver = currentQuake; // decides the biggest earthquake ever recorded.
}
myObservatory.addQuakeHere(currentQuake); //adding to specified observatory
}
的getObservatory方法是從天文臺的數組列表中選擇對象的天文臺,它工作正常,在其他地方的迭代器。
這一切都工作正常,直到最後一行。 addQuakeHere是一種從天文臺類中提取的方法,用於在陣列列表中添加和保存地震,但是當我通過終端運行它並獲取到這部分時,我會得到一個Java.lang.nullpointerexception消息。爲什麼?
的要求,對於天文臺類的代碼:
public class Observatory
{
private ArrayList <Earthquake> quakes;
public Observatory(String name, String country, int startYear, int area) {
quakes = new ArrayList<Earthquake>(); //array list containing quakes.
//other constructors and things omitted.
}
public void addQuakeHere(Earthquake quake){
quakes.add(quake);
}
}
的要求,該方法getObservatory:
public Observatory getObservatory(String name){ // method to select a certain observatory.
Iterator iter = allObservatories.iterator();
while(iter.hasNext()) { //while there is another observatory in the queue.
Observatory currentObserve =(Observatory) iter.next(); //move on to the next one.
if(name == currentObserve.GetName()){
return currentObserve; //if the name matches the input parameter, return the observatory.
}
}
return null;
}
'getObservatory'必須返回null,可我們看到,方法 – Quince 2014-11-05 21:02:05
要麼myObservatory中的代碼爲空或addQuakeHere拋出異常。我們可以看到天文臺課程的代碼,看看爲什麼? – 2014-11-05 21:03:55
確實有幫助嗎? – Finlay 2014-11-05 21:13:04