java - 在 Java for 循环中获取 NullPointerException

标签 java

我有 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/

相关文章:

java - 你必须在你的主类中扩展 JApplet 吗?

java - 调整 AnchorPane 中标签的大小

java - 如何优化 Java 中的映射规则?

Java - 根据从串行端口接收的数据动态更改jLabel文本

java - 替换 HashSet 内容而不创建新的 HashSet 对象

java - java中使用Dom解析xml

java - 以更智能的方式在 Junit 5(或其他测试 Java 库)中使用数组参数化

带有 Eclipse 的 Java - 丢失的设计页面

java - 如何从java访问ilog决策变量?

java - 无法从 Java 应用程序连接到 Postgres