如何解决array.equals(otherArray)评估为null?

时间:2019-03-09 06:18:51

标签: java arrays object nullpointerexception null

我试图建立一个遍历数组的for循环,使用名为getID()的方法将用户输入与每个对象进行比较,该方法返回存储的各个员工的用户ID。两次运行之间不会保存数据,因此在第一个循环中,所有对象(我相信)都应该为空。话虽如此,我在应该比较getID()和userInput字符串检索的字符串的行上得到了一个nullPointerException。数组初始化如下:

Salesperson[] staffList;
staffList = new Salesperson[20];

这里是有问题的循环,if语句是引发NPE的行:

for(i = 0; i < staffList.length; i++) 
 {
     if(staffList[i].getID().equals(idNum))
     {
          duplicateID = true;
     }
 }

这是Salesperson数组的类:

public class Salesperson
{
private String name;
private String idNum;
private double annSales;

//Various getter and setter methods here
}

如果我错过了任何事情,请告诉我。我过去曾经使用过Stack Overflow,但我自己从未问过一个问题。我曾尝试在这里搜索,但尚未找到任何对我有帮助的东西。预先感谢!

1 个答案:

答案 0 :(得分:1)

您可以像下面这样更新代码,以避免NPE。

    Salesperson[] staffList;
        staffList = new Salesperson[20];

        for(int i = 0; i < staffList.length; i++)
        {
            Salesperson salesPerson = staffList[i]; // staffList[i] i.e salesPerson = null.... null.getId throws NPE.

System.out.println("sales =" + sales); // sales = null
            if(sales != null) {
                if (sales.getId().equals(idNum)) {
                      //Do something..
                }
            }

        }