我试图编写一个程序来创建一个媒体对象,我创建了一个继承自Media的Audio继承的Cassette类。我得到一个空指针异常,我已经尝试了几个小时来解决它,但我不知道它为什么被抛出。我提前感谢您的帮助,谢谢。
在我的应用程序类中,我发起以下内容:
static Media[] collection = new Media[100];
稍后在代码中我尝试创建一个新的Cassette对象,但它给了我所说的空指针异常。 我的代码是:
collection[collection[0].getNumItems()] = new Cassette(cTitle, cMajorArtist, cPlayingTime, cNumPlays, cNumGroupMembers, cGroupMembers, pArtist, cNumSongs, cSongs);
传递到Cassette的所有项目都是用户输入数据。它编译得很好,但是当我运行它时我得到了一个错误。
修改
这是我的媒体类中的numItems值
static int numItems = 0;
以及返回项目数的方法:
public int getNumItems()
{
return numItems;
}
感谢。
答案 0 :(得分:0)
我建议你使用像Collection
这样的ArrayList
。使用diamond operator看起来像,
static List<Media> collection = new ArrayList<>();
然后您可以使用List#add(E)
collection.add(new Cassette(cTitle, cMajorArtist, cPlayingTime,
cNumPlays, cNumGroupMembers, cGroupMembers, pArtist, cNumSongs, cSongs));
编辑如果您想使用数组类型,那么
collection[collection[0].getNumItems()]
应该是
collection[Media.getNumItems()]
致电static getNumItems()
中的Media
。哪个应该
public static int getNumItems()
{
return numItems;
}