我不明白为什么在运行io时会收到java.lang.Nullpointerexception错误消息

我不明白为什么在运行io时会收到java.lang.Nullpointerexception错误消息,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,我正试图编写一段代码,让人们能够将不同地震的数据添加到不同的观测站,并允许你提取有关地震的数据 当我运行终端时,我可以添加观测站,但当涉及到添加地震并将其放入特定观测站时,我会得到java.lang.Nullpointerexception错误 public void AddQuakeString名称、整数震级、整数纬度、整数经度、整数年份{ Observatory myobservative=getObservatoryname; //指定一个观测站,以便在每次地震发生时将其存储。 地震cur

我正试图编写一段代码,让人们能够将不同地震的数据添加到不同的观测站,并允许你提取有关地震的数据

当我运行终端时,我可以添加观测站,但当涉及到添加地震并将其放入特定观测站时,我会得到java.lang.Nullpointerexception错误

public void AddQuakeString名称、整数震级、整数纬度、整数经度、整数年份{ Observatory myobservative=getObservatoryname; //指定一个观测站,以便在每次地震发生时将其存储。 地震currentQuake=新地震名称、震级、纬度、经度、年份;//设置局部变量 allQuakes.addcurrentQuake;//添加到arraylist 如果currentQuake.GetMagnite>4{ 大地震; } 如果currentQuake.GetMagnite>=最大震级{ biggestQuakeEver=currentQuake;//决定有记录以来最大的地震。 } myobservative.addQuakeHerecurrentQuake;//添加到指定的观测站 } getObservatory方法是一个迭代器,它从天文台对象的数组列表中选择天文台,在其他任何地方都可以正常工作

这一切都很好,直到最后一行。addQuakeHere是从Observator类中提取的一个方法,用于在arraylist中添加和保存地震,但是当我通过终端运行它并到达这一部分时,会得到一条Java.lang.nullpointerexception消息。为什么?

根据要求,天文台课程代码如下:

公营天文台 { 私人ArrayList地震; 公共观测字符串名称、字符串国家/地区、整数起始日期、整数区域{ 地震=新建ArrayList;//包含地震的数组列表。 //其他构造函数和省略的内容。 } 公共空间地震{ 地震; } } 根据要求,GetObservator方法:

public Observatory getObservatoryString name{//方法选择某个天文台。 迭代器iter=allObservatories.Iterator; whileiter.hasNext{//,而队列中还有另一个观测站。 Observator CurrentObservator=Observatory iter.next;//转到下一个。 ifname==currentObserve.GetName{ return currentObserve;//如果名称与输入参数匹配,则返回Observator。 } } 返回null; } ifname==currentObserve.GetName{

那条线

您正在比较字符串,但没有使用.equals。因此,它正在比较两个字符串对象的内存位置,这两个对象不相等,所以它一直在运行…但从未找到任何字符串,因此返回null。不确定为什么它在其他地方显然有效


一般来说,如果调用的方法具有返回null的功能,则需要检查null。此方法可能无法找到Observator,因此可能返回null。因此,为了防止将来出现NPE,检查GetObservator是否确实返回了某些内容将是一个良好的做法。

GetObservator必须如果返回null,我们可以看到该方法中的代码吗myObservatory为null或addQuakeHere正在引发异常。我们可以看到Observatory类的代码以了解原因吗?getObservatory可能与之重复吗?抱歉,getObservatory解决了这个问题,非常感谢。我们一直在努力解决这个问题,真是松了一口气。