Java 在创建基于文本的“数据库”时,尝试使用数组存储同一对象的多个实例时出现空指针异常
我试图用java创建一个文本“数据库”,它接受用户输入来填充对象,并将它们存储在数据库clas中的一个数组中。 这是我的“电影”课,没有所有的“场景”和“获取”:Java 在创建基于文本的“数据库”时,尝试使用数组存储同一对象的多个实例时出现空指针异常,java,arrays,pointers,null,Java,Arrays,Pointers,Null,我试图用java创建一个文本“数据库”,它接受用户输入来填充对象,并将它们存储在数据库clas中的一个数组中。 这是我的“电影”课,没有所有的“场景”和“获取”: public class Movie { private int fileSize,duration; private String movieNamez,director; static int numberOfMovies; //------------------------------------
public class Movie
{
private int fileSize,duration;
private String movieNamez,director;
static int numberOfMovies;
//--------------------------------------------------------------------------------------
// constructor method
//--------------------------------------------------------------------------------------
public Movie()
{
movieNamez = "No title - SLOT FREE";
director = "No director - SLOT FREE";
fileSize = 0;
duration = 0;
}
//--------------------------------------------------------------------------------------
public void setmovieNumber(int movieNumber)
{
this.numberOfMovies = movieNumber;
}
public int getmovieNumber()
{
return this.numberOfMovies;
}
//--------------------------------------------------------------------------------------
public void setmovieName(String newmovieNamez)
{
this.movieNamez = newmovieNamez;
}
public String getmovieName()
{
return this.movieNamez;
}
//--------------------------------------------------------------------------------------
以下是我的MovieDatabase类的相关部分:
public class MovieDatabase
{
//--------------------------------------------------------------------------------------
int maxMovies = 4;
// ArrayList<Movie> allMovies = new ArrayList<Movie>();
Movie [] allMovies = new Movie[maxMovies];
//md.addmovieData(movieCount,movieName,director,fileSize,duration);
//--------------------------------------------------------------------------------------
public void addmovieData(int movieNum, String movieName,String director, int fileSize, int duration)
{
allMovies[movieNum].setmovieName(movieName);
allMovies[movieNum].setDirector(director);
allMovies[movieNum].setfileSize(fileSize);
allMovies[movieNum].setDuration(duration);
}
private void printMovie(Movie movie){
System.out.println("Movie Name: "+movie.getmovieName());
System.out.println("Movie Director: "+movie.getDirector());
System.out.println("Movie File Size: "+movie.getfileSize());
System.out.println("Movie Duration: "+movie.getDuration());
System.out.println();
}
//--------------------------------------------------------------------------------------
我试图将要存储的信息作为电影对象发送,同时发送一个整数,该整数告诉我电影的计数,然后随着movieCount的迭代,我使用该迭代告诉程序电影应该存储在数组中的哪个数字位置。我实现数组的方法有点问题,所以我得到了一个空指针异常,但几个小时后,我知道我会摆弄它并尝试其他方法,包括arrayList,我似乎无法理解我做错了什么。提前感谢你们抽出时间,伙计们,这是我的头绪 当您创建一个数组对象时,它的所有状态都会初始化为默认值,在您的情况下,默认值为null 在addmovieData方法中,您必须首先创建一个Movie对象并将其推送到allMovies。类似这样的事情-
Movie movie = new Movie();
allMovies[movieNum] = movie;
allMovies[movieNum].setmovieName(movieName);
allMovies[movieNum].setDirector(director);
allMovies[movieNum].setfileSize(fileSize);
allMovies[movieNum].setDuration(duration);
谢谢现在,我可以添加一部电影,但是当我尝试使用printmovie方法时,仍然会出现空指针异常,但是如果我尝试通过创建一部新电影来解决这个问题,就像上次一样,它显然会打印一部新的空白电影,而不是我刚才添加的电影。再次感谢你抽出时间来帮助我。下面是打印它的代码:“public void printDatabase{forint i=0;i@rodney1234这可能是因为您的allMovies的电影数少于allMovies.length?如果movie!=null{//print movie},您应该在printMovie方法中添加null检查,或调用printMovie only movieCount次,即int i=0;i
Movie movie = new Movie();
allMovies[movieNum] = movie;
allMovies[movieNum].setmovieName(movieName);
allMovies[movieNum].setDirector(director);
allMovies[movieNum].setfileSize(fileSize);
allMovies[movieNum].setDuration(duration);