0

我收到空指针异常错误,但我不明白出了什么问题。

public static void main(String[] args) {
    CDlist CD[] = new CDlist[5];
    CD[0].add();
}

那是我的主要,很简单,它只是创建5个CD对象并调用第一个对象的add方法。

public boolean add(){
    String author;
    String title;
    String songTitle;
    int amount;
    boolean result = false;
    if(numUsed < length){
        System.out.println("Please input the name of the CD you wish to add.");
        title = input.next();
        CD[numUsed].title = title;
        System.out.println("Please input the author of the CD you wish to add.");
        author = input.next();
        CD[numUsed].title = title;
        System.out.println("Please input the amount of songs you want to have.");
        amount = input.nextInt();
        for(int i = 0; i<amount; i++){
            System.out.println("Add song name:");
            songTitle = input.next();
            CD[numUsed].song[amount] = songTitle;
        }
        numUsed++;
        result = true;
    }
    return result;
}

这是我在 CDlist 类中的 add 方法

4

2 回答 2

1

问题是

 CD[0].add();

CD[0]由于 java 数组的工作方式,为 null:

CDlist CD[] = new CDlist[5];

这分配了一个数组 new CDLists 但列表中填充了null条目。为了使其包含有效对象,您必须手动填充:

CDlist CD[] = new CDlist[5];
for(int i =0; i < 5; i++)
{
    CD[i] = new CDList(); //or other constructor, or other way of getting CD object
}

如果不这样做,数组将只包含任何内容,null并且尝试调用该方法将失败,因为您尝试调用它的对象不存在。

于 2013-03-14T01:17:29.617 回答
0

如果您要打印出 CD 阵列,您会看到它如下所示:

空,空,空,空,空

您创建了一个大小为 5 的数组,但与 C++ 不同的是,它不调用默认构造函数。您必须将它们全部初始化。

于 2013-03-14T01:17:07.917 回答