使用对象数组从另一个类调用方法

时间:2013-03-14 01:14:56

标签: java object methods

我得到空指针异常错误,我不明白错误。

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方法

2 个答案:

答案 0 :(得分:1)

探测器

 CD[0].add();
由于java数组的工作方式,

CD[0]为null:

CDlist CD[] = new CDlist[5];

这会分配一个新的CDList数组,但列表中会填充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,并且尝试调用该方法将失败,因为您尝试调用它的对象不存在。

答案 1 :(得分:0)

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

  

null,null,null,null,null

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