MovieList.java中主要方法上的运行时错误。
我不确定我的程序设计在本质上是否很好,但是我想知道为什么它崩溃。提前致谢。
package javaPractical.week3;
import javax.swing.*;
public class Movie {
//private attributes
private String title;
private String movieURL;
private String year;
private String genre;
private String actor;
// constructor
Movie(String t, String u, String y, String g, String a) {
this.title = t;
this.movieURL = u;
this.year = y;
this.genre = g;
this.actor = a;
}
//getters and setters
public void setTitle(String t) {
this.title = t;
}
public String getTitle() {
return this.title;
}
public void set_url(String a) {
this.movieURL = a;
}
public String get_url() {
return this.movieURL;
}
public void setYear(String y) {
this.year = y;
}
public String getYear() {
return this.year;
}
public void setGenre(String g) {
this.genre = g;
}
public String getGenre() {
return this.genre;
}
public void setActor(String a) {
this.actor = a;
}
public String getActor() {
return this.actor;
}
//output movie details
public String toString() {
return ("Title: " + this.title + "\nURL: " + this.movieURL + "\nYear: "
+ this.year + "\nGenre: " + this.genre + "\nActor: "
+ this.actor);
}
public static void main(String[] args) {
//testing Movie class
Movie Movie1 = new Movie("Spiderman", "www.", "2002", "Action",
"Tobey M");
JOptionPane.showMessageDialog(null, Movie1.toString());
//testing MovieList class
}
}
package javaPractical.week3;
import javax.swing.*;
import java.util.ArrayList;
public class MovieList1 {
private static ArrayList myFavouriteMovies = new ArrayList();
private static int NUM_OF_MOVIES = 10;
private int numberOfMovies = 0;
private int index = 0;
public MovieList1() {
this.myFavouriteMovies = null;
this.numberOfMovies = 0;
this.index = 0;
}
public int getNumberOfMovies() {
return this.myFavouriteMovies.size();
}
public boolean isEmpty() {
if (this.myFavouriteMovies.isEmpty()) {
return true;
} else
return false;
}
public static void main(String[] args) {
MovieList1 List = new MovieList1();
String titleADD;
String movieURLADD;
String yearADD;
String genreADD;
String actorADD;
titleADD = JOptionPane.showInputDialog(null, "Enter title:");
movieURLADD = JOptionPane.showInputDialog(null, "Enter URL:");
yearADD = JOptionPane.showInputDialog(null, "Enter year:");
genreADD = JOptionPane.showInputDialog(null, "Enter genre:");
actorADD = JOptionPane.showInputDialog(null, "Enter actor:");
Movie TempMovie = new Movie(titleADD, movieURLADD, yearADD, genreADD,
actorADD);
myFavouriteMovies.add(TempMovie);
}
}
最佳答案
尝试将新的Movie
添加到myFavouriteMovies
时,程序崩溃,因为myFavouriteMovies
是null
。
尽管myFavouriteMovies
初始化为一个新的空ArrayList
,但随后在null
构造函数中将其设置为MovieList1
。
目前,myFavouriteMovies
是static
,因此每个MovieList1
实例之间仅共享此变量的一个副本。您可能想从static
声明中删除myFavouriteMovies
修饰符。然后,每个MovieList1
对象将具有其自己的myFavouriteMovies
字段。但是,您随后将向MovieList1
类添加新方法,以允许您的main
方法将影片添加到影片列表中,也许是这样的:
List.add(TempMovie);
另外,您还需要删除
this.myFavouriteMovies = null;
从构造函数中获取,因为已将其初始化为空的
ArrayList
,所以您不想将其设置回null
。关于java - Java空指针异常-不明白为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4061075/