我得到空指针异常错误,我不明白错误。
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方法
答案 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 ++不同,它不会调用默认的构造函数。你必须将它们全部初始化。