我试图写一段代码,可以让人们增加约到不同的地震数据运行不同的观测站,并允许您提取有关它们的数据。我不明白为什么我得到一个显示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