我有 3 个类,Main、Contacts 和 ContactsManager。我在“searchContact”方法中收到以下错误。我不知道如何修复。我正在循环遍历“friendsCount”变量表示的尽可能多的联系人的联系人索引数组。请帮助我修复 searchContact 方法。谢谢。
ContactsManager 类
public class ContactsManager {
// Fields
Contact [] myFriends;
int friendsCount;
// Constructor
ContactsManager() {
this.friendsCount = 0;
this.myFriends = new Contact[500];
}
// Methods
void addContact(Contact contact) {
myFriends[friendsCount] = contact;
friendsCount++;
}
Contact searchContact(String searchName) {
for(int i = 0; i < friendsCount; i++) {
if(myFriends[i].name.equals((searchName))) {
return myFriends[i];
}
}
return null;
}
}
联系人类
public class Contact {
String name;
String email;
String phoneNumber;
}
主类
public class Main {
public static void main(String[] args) {
ContactsManager myContactManager = new ContactsManager();
Contact con1 = new Contact();
con1.name = "Albert";
con1.phoneNumber = "9545899977";
myContactManager.addContact(con1);
Contact con2 = new Contact();
con1.name = "Jason";
con1.phoneNumber = "9545899944";
Contact con3 = new Contact();
con1.name = "Larry";
con1.phoneNumber = "9545899911";
Contact con4 = new Contact();
con1.name = "Mary";
con1.phoneNumber = "9545899933";
Contact con5 = new Contact();
con1.name = "Saraht";
con1.phoneNumber = "9545899900";
myContactManager.addContact(con2);
myContactManager.addContact(con3);
myContactManager.addContact(con4);
myContactManager.addContact(con5);
System.out.println(myContactManager.searchContact("Jason"));
}
}
最佳答案
您始终在设置 con1 的值。
您的主要方法实例化了其他(con2、con3 和 con4),但没有将它们的名称设置为任何内容(因此它为空)。 main 方法必须更改如下。
ContactsManager myContactManager = new ContactsManager();
Contact con1 = new Contact();
con1.name = "Albert";
con1.phoneNumber = "9545899977";
myContactManager.addContact(con1);
Contact con2 = new Contact();
con2.name = "Jason";
con2.phoneNumber = "9545899944";
等等。
此外,在您的 searchContact
方法中,请考虑如果找不到联系人(返回 null)会发生什么情况。相反,请考虑抛出自定义未找到异常,或者不直接返回联系人,而是返回可选(因为搜索可能找不到任何内容)。
关于java - 在 Java for 循环中获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57465223/