开发Java专辑库调用displayAlbums抛出java.lang.NullPointerException求助
空指针异常排查思路
本次异常触发在displayAlbums()方法的albumobjects[i].displayAlbum();行,本质是访问的目标对象为null时调用了实例方法,常见触发场景如下:
numalbum计数异常
如果你还未通过菜单1添加过任何专辑,numalbum的初始值被错误设置为大于0的数值,循环会遍历到对象数组的未赋值位置。Java中对象数组初始化后所有元素默认值为null,调用displayAlbum()会直接抛出空指针。addAlbum()方法逻辑错误
大概率是两种问题:- 添加专辑时仅对
numalbum做了自增,没有把createAlbum()返回的实例正确赋值到albumobjects数组的对应下标 numalbum自增逻辑写在数组赋值之前,导致第一个添加的专辑存到了下标1的位置,下标0永远是null,第一次循环就报错
- 添加专辑时仅对
albumobjects数组未初始化
你只声明了Album[] albumobjects;但没有执行初始化操作(比如albumobjects = new Album[你预设的最大存储容量];),数组本身就是null,访问albumobjects[i]直接触发空指针。
临时调试代码
你可以替换displayAlbums()方法为以下版本,快速定位具体异常点:
public void displayAlbums(){ System.out.println("调试信息:当前numalbum计数为" + numalbum); System.out.println("调试信息:albumobjects数组是否为null:" + (albumobjects == null)); for(int i=0;i<numalbum;i++){ System.out.println("调试信息:下标" + i + "的专辑对象是否为null:" + (albumobjects[i] == null)); if(albumobjects[i] != null) { albumobjects[i].displayAlbum(); } } }
内容的提问来源于stack exchange,提问作者bbco
相关产品推荐
相关产品推荐

