1

我最近在学习 Java,并试图使用类。但我无法初始化数组对象

 class Tablet
 {
    String S = null;
    void set(String a)
    {
        S = a;
    }
}

public class questions
{

public static void main(String args[])
{

    Tablet[] T = new Tablet[6];
    for(int i = 0;i<6;i++)
    {
        T[i].set("111"); // I get null pointer exception here
    }

    //solution(T,6);
} 
}

谁能告诉我哪里出错了?

4

4 回答 4

4

当你这样做

Tablet[] T = new Tablet[6];

您正在创建未指向其他任何地方的引用数组(即引用变量数组) ,即它们为空。您需要将对象分配给数组中上面创建的引用变量。

Tablet[] T = new Tablet[6];
    for(int i = 0;i<6;i++)
    {
        T[i]=new Tablet();
        T[i].set("111"); // No Null Pointer Exception Now
    }
于 2013-09-20T02:54:17.740 回答
2

您需要初始化数组的索引

class Tablet {

    String S = null;

    void set(String a) {
        S = a;
    }
}

class questions {

    public static void main(String args[]) {

        Tablet[] T = new Tablet[6];
        for (int i = 0; i < 6; i++) {
            T[i] = new Tablet();
            T[i].set("111"); // I get null pointer exception here
        }

        //solution(T,6);
    }
}
于 2013-09-20T02:55:00.780 回答
1

您创建了一个数组(多个Tablet对象的持有人),但实际上并没有创建任何Tablets 进入其中。现在,T(实际上应该是小写T的;看起来既是常量又是类型参数)具有以下内容:

T: {null, null, null, null, null, null}

您需要创建new Tablets 并将它们放入您的数组中,可能是这样的:

for(int i = 0; i < array.length /* don't hardcode the size twice */; i++) {
    array[i] = new Tablet();
    array[i].set("111");
}
于 2013-09-20T02:53:15.233 回答
0

您已经初始化了数组。但是,数组中的元素指向 null。所以很明显,如果你试图在空指针上调用一个方法,你会得到一个空指针异常。您必须使用 new 关键字初始化数组中的每个对象。

你必须添加一个 T[i] = new Tablet(); 在对其执行任何功能之前初始化变量。

T[i]=new Tablet();
T[i].set("111");

在 for 循环中执行此操作

于 2019-07-03T05:05:18.807 回答