如何解决遍历Salesperson数组调用getID()时的NullPointerException?
解决数组遍历中的NullPointerException问题
嘿,我完全懂你踩的这个坑!你用new Salesperson[20]初始化数组时,其实只是创建了一个能装20个Salesperson对象的空容器,数组里的每一个元素默认都是null——就像你买了一排空柜子,还没往里面放东西就伸手去掏,不出错才怪呢!
直接修复方案
在调用getID()方法之前,先检查当前数组元素是不是null,用短路逻辑与&&来避免空指针触发:
for(i = 0; i < staffList.length; i++) { // 短路&&会保证:如果staffList[i]是null,后面的getID()就不会执行 if(staffList[i] != null && staffList[i].getID().equals(idNum)) { duplicateID = true; // 找到重复ID后直接跳出循环,不用遍历剩余元素,提升效率 break; } }
额外的严谨性优化
如果你还担心用户输入的idNum本身是null,可以再加一层判断,避免调用equals()时触发空指针:
for(i = 0; i < staffList.length; i++) { if(idNum != null && staffList[i] != null && staffList[i].getID().equals(idNum)) { duplicateID = true; break; } }
补个小知识点
Java里对象数组和基本类型数组不一样:基本类型数组初始化后会给每个元素赋默认值(比如int数组默认是0),但对象数组的默认值全是null,必须手动创建new Salesperson()实例并赋值给数组元素后,才能安全调用对象的方法哦。
内容的提问来源于stack exchange,提问作者Spencer Burd
相关产品推荐
相关产品推荐

