java数组空指针一场_java数组报错空指针 java.lang.NullPointerException

在运行人人爬虫的爬取用户档案StartUserCrawl类时,突然报出了java.lang.NullPointerException错误

具体的报错行在 UserCrawler.getUserProfile(String, String)的if(temp[schoolNameIndex+1].matches("\\d+?级")){

if(temp[j].matches(schoolName)){

System.out.println("√在此用户教育经历内找到当前查找学校-"+schoolName);

schoolNameIndex = j;

if(temp[schoolNameIndex+1].matches("\\d+?级")){

int convertYear = Integer.parseInt(temp[schoolNameIndex+1].substring(0,4));

....

temp[]是String[30]的数组,已经实例化。

于是print整个temp数组发现,只有7个元素,也就是说后面的30-7=23个元素都为null,没有被赋值过:

0 哈尔滨工业大学

1 2008级

2 市政学院

3 哈师大

4 2004级

5 生命与环境科学学院

6 哈尔滨工业大学

而在报错行,当时的 j,也就是后面赋值的 schoolNameIndex,已经是6了,也就是指向最后一个已赋值元素 6 哈尔滨工业大学

所以此时的temp[schoolNameIndex+1]便指向的是未被赋值过的null了

将代码改为下面的,完美解决问题,不再报错:

if(temp[j].matches(schoolName)){

System.out.println("√在此用户教育经历内找到当前查找学校-"+schoolName);

schoolNameIndex = j;

//解决java.lang.NullPointerException问题,判断此数组元素是否为空

if((schoolNameIndex+1

//判断数组内其下一个条目存储的是否为入学年

if(temp[schoolNameIndex+1].matches("\\d+?级")){

int convertYear = Integer.parseInt(temp[schoolNameIndex+1].substring(0,4));

由此,经过查阅资料,造成空指针异常的原因有:

·当一个对象的值为空时,你没有判断为空的情况。

你可以试着把下面的代码前加一行代码:

if(rb!=null && rb!="")

改成:

if(rb==null);

if(rb!==null&&rb!="")

……

因为你定义的时候 定义的是null;

所以查的时候如果也是null 那么内存没有为你定义这个List分配内存空间 即有效的内存地址 所以会这样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值