2015-06-13 62 views
-1

嘿,有人可以帮我理解为什么我一直试图运行这个时候得到一个空指针异常? 我只是想学习我正在参加的课程的数据列表。ArrayList返回NullPointer异常|| Java || OOP

////////////////////////

public class Address { 
    int houseNumber; 
    String roadNumber; 
    String areaName; 
    String cityName; 


public Address(int hn, String rn, String an, String cn){ 
    this.houseNumber = hn; 
    this.roadNumber = rn; 
    this.areaName = an; 
    this.cityName = cn; 
} 


public String toString() { 
    return "House # " + this.houseNumber + "\nRoad # " + this.roadNumber + "\n" + this.areaName + "\n" + this.cityName; 
} 



} 

///////////////////////// ////

import java.util.ArrayList; 

public class AddressReferences { 

ArrayList<Address> myCollection = new ArrayList<Address>(); 


public void addAddress (int hn, String rn, String an, String cn) { 
    myCollection.add(new Address(hn,rn,an,cn)); 
} 

public void printAddress() { 
    for (Address i : myCollection){ 
     System.out.println (i); 


    } 
} 
} 

//////////////////////////////////////

public class Test { 

static AddressReferences ar; 


public static void main(String[] args){ 

    ar.addAddress(46, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(44, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(28, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(89, "12/a", "Kotol", "Dhaka"); 
    ar.addAddress(60, "7/a", "Kotol", "Dhaka"); 


    ar.printAddress(); 





} 
} 
+2

您还没有初始化任何东西。当你输入你的主要方法时它是空的。 – swingMan

回答

3

字段(实例字段或静态字段)被初始化为th的“all bits off”版本他们能够拥有的一种价值;对于对象引用,这是null。您的ar静态字段从null开始,并且您从不向其分配任何内容。因此,ar.addAddress(...)将抛出一个NPE,因为arnull

要修复它,使用ar任何东西前加

ar = new AddressReferences(); 

...到main

0

这里的零点异常并不意味着myCollection为空,这意味着ar为空,因此将ar = new AddressReferences();添加到您的主函数中。

public static void main(String[] args){ 

    ar = new AddressReferences(); 

    ar.addAddress(46, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(44, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(28, "9/a", "Kotol", "Dhaka"); 
    ar.addAddress(89, "12/a", "Kotol", "Dhaka"); 
    ar.addAddress(60, "7/a", "Kotol", "Dhaka"); 

    ar.printAddress(); 

}