Java - 我的程序中出现NullPointerException

时间:2013-12-29 11:53:16

标签: java exception nullpointerexception

我的程序将运行此异常:

以下是示例:

case 3:
   //display contact    
   cList.displayContacts();    


 public void displayContacts(){
        int i;
        for(i=0; i < myContacts.length; i++){
            Contact c = myContacts[i];
            System.out.println("Name: " + c.getName());
            System.out.println("Number: " + c.getNumber());
            System.out.println("Email: " + c.getEmail());
            System.out.println("------------------------------------");
        }
    }

atlog atlog:

  

线程“main”中的异常java.lang.NullPointerException
   在ContactList.displayContacts(ContactList.java:45)    在ContactListDriver.main(ContactListDriver.java:67)

3 个答案:

答案 0 :(得分:1)

显然c为空。您需要检查数组myContacts是否在从i = 0到myContacts.length的整个范围内初始化

修改
根据您的上一条评论我的猜测是正确的,myContacts[]数组中的一些引用是null

您可以打印整个数组并查看哪些元素为空:

System.out.println(Arrays.toString(myContacts));

另一种可能性是myContacts本身为空,因此它会提前NPE抛出,如 T.J中所述。克劳德的答案。

答案 1 :(得分:1)

有两种可能性:

  1. 由于myContactsnull,此行会抛出,因此尝试访问length会导致NPE:

    for(i=0; i < myContacts.length; i++){
    
  2. 由于cnull,此行会抛出,因此尝试访问其getName方法会导致NPE:

    System.out.println("Name: " + c.getName());
    

    如果myContacts中的至少一个条目为null,就会发生这种情况。

  3. 通过查看第45行,你会知道哪一个。(这可能是提供问题的有用信息!)

    您可以通过调试器中的代码来调试这些类型的东西。

答案 2 :(得分:0)

我的Contacts单元格中的一个未初始化(默认值为null), 这就是你得到一个NULL点异常的原因。

添加空检查:

Contact c = myContacts[i];

    if (null != c) {
    ...
}