Lab3中遇到的问题与解决方案

本文讲述了作者在编写Lab3时遇到的空指针异常,通过分析发现是由于未初始化关键属性导致。通过模仿Graph接口与ConcreteEdgesGraph类的构造方式,并修正候选者和选民属性的初始化,解决了这个问题。
摘要由CSDN通过智能技术生成

在编写lab3时,先根据spec完成了测试文件的编写,完成poll接口的具体实现GeneralPollImpl后,对其进行了测试,却发现了这样的错误:

查看Fail Trace,发现显示的异常为java.lang.NullPointerException


上网查资料可以发现这个异常被称为空指针异常,出现这种异常的可能原因有:接口类型的对象没有用具体的类初始化,比如使用Set set;时就会报错;字符串变量未初始化,比如定义了String str = null;然后使用了这个字符串,就会抛出空指针异常。

我觉得出现这种错误的原因是接口或者是具体类的创建方法有问题,我在接口poll中构造方法的实现返回了一个新的GeneralPollImpl,模仿了lab2中Graph接口与ConcreteEdgesGraph类的构造方法,在Graph中直接返回一个空的ConcreteEdgesGraph类,而ConcreteEdgesGraph类的构造方法直接保持空即可

 

所以我在这次的实验中也采用这样的方法:

然而我却忽视了二者rep的不同,在实验三中,我并没有初始化candidates,Voters等属性,而在测试文件中直接使用mutator方法导致使用了null的数据,所以会引发空指针异常。

所以做了如下更改

这样这个异常被成功解决 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值