getter上的java NullPointerException
我正在准备期末考试。它应该是一个“媒体库”,用于存储有关个人媒体(DVD、游戏等)的信息,以及它应该接收的新媒体项目,将它们存储到阵列中,并在提示时显示它们。它执行所有这些操作,但当它显示时,它在getter上有一个NullPointerException,即使它是按照我的意图执行的
public class MediaItem {
private String title;
private String format;
private boolean onLoan;
private String loanedTo;
private String dateLoaned;
public MediaItem(){
title = null;
format = null;
onLoan = false;
loanedTo = null;
dateLoaned = null;
}
public MediaItem(String title, String format){
this.title = title;
this.format = format;
onLoan = false;
}
上面是类的字段和构造函数,该类按照我们被告知的方式调用“MediaItems”
下面是另一个类的部分,即库本身。一个阵列用于存储媒体项,另一个阵列用于打印列表。还有add方法以及我如何将它们添加到数组中
private MediaItem[] items = new MediaItem[100];
private String[] listOfItems = new String[100];
private int numberOfItems = 0;
public void addNewItem(String title, String format){
MediaItem item = new MediaItem(title, format);
items[numberOfItems] = item;
numberOfItems++;
}
这是我遇到的问题
public void listAllItems(){
for (int i = 0; i < items.length; i++){
System.out.println(items[i].getTitle());
}
}
这不是它应该做的,但我目前的问题是,它确实打印出了整个项目列表,但也给出了NullPointerException,我不知道为什么。正在调用的getter是eclipse生成的基本getter
public String getTitle() {
return title;
}
这是一个Java我粗糙,所以我是新的,所以请温柔。我相信这是所有相关的部分,所以任何帮助都是感激的
# 1 楼答案
items.length
将始终是整个数组的长度(在您的情况下为100),无论您实际添加了多少项。试着这样做:本例中的问题不是getter本身,而是试图在
null
上调用getTitle()
方法# 2 楼答案
你们有100个座位,但我怀疑不是所有的座位都有人。这会在访问这些元素的属性时导致NullPointerException
您可以使用以下方法从数组中获取所有非空元素:
或者使用相同的“for”循环和空检查也应该足够了: