Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在创建基于文本的“数据库”时,尝试使用数组存储同一对象的多个实例时出现空指针异常_Java_Arrays_Pointers_Null - Fatal编程技术网

Java 在创建基于文本的“数据库”时,尝试使用数组存储同一对象的多个实例时出现空指针异常

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; //------------------------------------

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

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;iMovie movie = new Movie(); allMovies[movieNum] = movie; allMovies[movieNum].setmovieName(movieName); allMovies[movieNum].setDirector(director); allMovies[movieNum].setfileSize(fileSize); allMovies[movieNum].setDuration(duration);