Java对象数组打印空?
我有3个类,Movie用于将Movie对象添加到in-Movie数据库中,但它会一直打印null 当我添加两部电影时,它就像第一部电影被擦除,而它打印为空。还有一种方法可以检查数组中的位置是否为空,如果为空则不打印吗 这是我的电影课 下面是我的电影数据库类:Java对象数组打印空?,java,arrays,null,Java,Arrays,Null,我有3个类,Movie用于将Movie对象添加到in-Movie数据库中,但它会一直打印null 当我添加两部电影时,它就像第一部电影被擦除,而它打印为空。还有一种方法可以检查数组中的位置是否为空,如果为空则不打印吗 这是我的电影课 下面是我的电影数据库类: 我试图只包括相关部分,但到目前为止我所做的大部分工作都是相关的。问题在于这些方面 .... public void addData(String name, String director, double fileSize, int dur
我试图只包括相关部分,但到目前为止我所做的大部分工作都是相关的。问题在于这些方面
....
public void addData(String name, String director, double fileSize, int duration)
{
for(int i=0; i<4; i++)
mov[i] = new Movie();
...
还有一种方法可以检查数组中的位置是否为空,如果为空则不打印吗
您可以在Movie类中创建一个方法,该方法检查此Movie对象是否为空,并返回适当的结果
public class Movie {
...
...
public boolean isEmpty() {
if(
this.name.isEmpty() &&
this.director &&
this.fileSize == 0 &&
this.duration == 0 &&
this.moviecount == 0
)
return true;
else
return false;
}
...
...
}
现在,您可以使用以下方法检查此电影对象是否为空:
if(mov[i].isEmpty()) {
//empty movie object
...
}
在setData中,始终设置mov[0]的值。类成员i将永远不会更改循环变量将其隐藏。您不使用参数m来设置数据
将设置数据更改为
您可以检查数组是否包含null,但您正在初始化addData中的空电影对象。您还将电影传递给setData,但根本不使用传入的对象,您只是直接访问数组。退一步想想,当你添加数据时,你可能不想创建很多空对象。addData和printNames内部for循环中的局部变量i隐藏了类MovieDatabase的字段i。字段i始终为0,因此调用setData总是更新第一个Movie对象,其余3个对象的名称都为空。可能不会将它们移动到构造函数。初始化空对象是没有用的。@RamanSahasi在System.out.printlnmov[i].getName@SamHoward,这可能是因为您没有设置所有4个对象,而是打印所有对象。如果是这种情况,那么您可能需要在构造函数中初始化它们。或者更好的方法是检查它是否为null,或者不只是使用ifmov[i]!=空System.out.printlnmov[i].getName;在printNames方法中。
...
public void addData(String name, String director, double fileSize, int duration)
{
setData(mov[i],name,director,fileSize,duration);
i++;
count++;
}
private void setData(Movie m,String name, String director, double fileSize, int duration)
{
mov[i] = new Movie(); //++ edit
mov[i].setName(name);
mov[i].setDirector(director);
mov[i].setfileSize(fileSize);
mov[i].setDuration(duration);
}
...
public class Movie {
...
...
public boolean isEmpty() {
if(
this.name.isEmpty() &&
this.director &&
this.fileSize == 0 &&
this.duration == 0 &&
this.moviecount == 0
)
return true;
else
return false;
}
...
...
}
if(mov[i].isEmpty()) {
//empty movie object
...
}
m.setName(name);
m.setDirector(director);
m.setfileSize(fileSize);
m.setDuration(duration);