Java - 为什么我得到这个NullPointerException?

时间:2012-04-01 21:06:03

标签: java nullpointerexception

当我尝试向a1 [i]数组添加值时,我不明白为什么这会给我一个空指针异常。

public class Array {

String text;
int total = 0, count = 0;

Array[] a1 = new Array[100];
Scanner scan = new Scanner(System.in);



public void setData() {
    int i=0;

    System.out.println(a1.length);
    do {

        System.out.println("Enter some data: ");
        text = scan.next();
        if (text.equals("end"))break;
        a1[i].text = text; //I get a null pointer exception here. Not sure why. 
        i++;

    } while (true);

    }

4 个答案:

答案 0 :(得分:2)

a1数组中初始化的所有内容均为null。在使用成员方法执行任何操作之前,您必须在其中放置Array()的新实例。

这意味着:每当您想要使用a1[i]执行某些操作时,您必须先在其中设置Array的新实例。

示例:

for(int i = 0; i < n; i++) {
    a1[i] = new Array();
}

答案 1 :(得分:0)

因为a1 [i]中没有存储对象。你在这一行基本上说的是:

null.text = text

每次都会破坏

答案 2 :(得分:0)

你得到一个空指针异常,因为你已经为100个数组元素分配了空间,但你仍然需要初始化它们:

因此,在访问a1[i].text之前,您需要通过调用a1[i] = new Array()

对其进行初始化

另外我很确定,你确实想创建一些其他类型的对象,而不是Array。正如我所理解的那样,对您当前正在编写的类进行数组,因此您可能希望有多个String,例如:串[]。

我建议你改用LinkedList。

答案 3 :(得分:0)

Array[] a1 = new Array[100]; //here you just create an array of references to objects which are set to null
a1[i].text = text; //before this line you should assign to a1[i] a reference to Array object for example a1[i] = new Array();