gpt4 book ai didi

java - 创建基于文本的 'database' 时尝试使用数组存储同一对象的多个实例时出现空指针异常

转载 作者:行者123 更新时间:2023-12-02 12:06:05 27 4
gpt4 key购买 nike

我正在尝试在java中创建一个文本“数据库”,它接受用户输入来填充对象(电影)并将它们存储在我的数据库类中的数组中。这是我的“电影”类,没有所有“设置”和“获取”:

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();
}
//--------------------------------------------------------------------------------------

最后,这是用户界面类中的几行,其中获取输入并将其发送到数据库(然后发送到电影对象)。

 MovieDatabase md = new MovieDatabase();
int movieCount=0
md.addmovieData(movieCount,movieName,director,fileSize,duration);
movieCount++;

我正在尝试发送要存储为电影对象的信息以及一个整数,该整数告诉我电影的数量,然后当 movieCount 迭代时,我使用该迭代来告诉程序哪个数字(位置)电影应存储在数组中。我实现数组的方法出了问题,所以我得到了一个空指针异常,但是经过几个小时(可耻的,我知道)摆弄它并尝试其他方法(包括 arrayList)后,我似乎无法理解我的意思我做错了。提前感谢你们抽出时间,这让我很头疼。

最佳答案

当您创建 Array 对象时,它的所有状态都会初始化为默认值,在您的情况下为 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);

关于java - 创建基于文本的 'database' 时尝试使用数组存储同一对象的多个实例时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com