Java 无法添加具有多个参数的ArrayList

Java 无法添加具有多个参数的ArrayList,java,arraylist,Java,Arraylist,我有一个电影的ArrayList,它以电影标题,年份,类型,价格作为参数。标题,年份,价格没有错误。我有三门课,电影,目录,和体裁,课程体裁的代码已提供给我。错误似乎发生在类型中 我没有更改类型类,但我尝试使用字符串,它出现了错误,唯一一次没有更改的是当我输入null时 我希望能够添加到ArrayList中,但我在流派中遇到了一个错误 请原谅我的不理解,这(技术上)是我编程的第一年。你的电影构造函数只接受一个类型作为参数,而它应该接受一个列表作为参数: Movie(String title, i

我有一个电影的ArrayList,它以电影
标题
年份
类型
价格
作为参数。
标题
年份
价格
没有错误。我有三门课,
电影
目录
,和
体裁
,课程
体裁
的代码已提供给我。错误似乎发生在
类型中

我没有更改
类型
类,但我尝试使用字符串,它出现了错误,唯一一次没有更改的是当我输入
null

我希望能够添加到ArrayList中,但我在
流派
中遇到了一个错误


请原谅我的不理解,这(技术上)是我编程的第一年。

你的
电影
构造函数只接受一个
类型
作为参数,而它应该接受一个
列表
作为参数:

Movie(String title, int year, Genre genre, int price){
}
应该是:

Movie(String title, int year, List<Genre> genres, int price){
}

你也可能应该使用
集合
而不是
列表
(在该列表中有两次流派没有意义)。我必须在线提交,它会检查字段是否正确初始化,如果我在电影类中更改字段,它将不会接受。对不起,我忘了提那件事。换句话说,我不能更改字段。如果你不能更改电影类别,这意味着只能链接一种类型。这意味着您将无法向其传递列表或向其中添加多个类型,您必须选择是否要使用科幻、戏剧或犯罪类型初始化矩阵电影。我会选择科幻。我会用一个例子来更新我的答案。我仍然想说电影类当时设计得很糟糕。好吧,我想我找到了一个解决方案,但我不确定这是否是正确的方法,这是我为目录制作的新代码。看来你掌握了窍门,你的代码在技术上可以工作。我想对自己说几句话:首先创建
类型
类型,然后将它们添加到列表中,这样可以避免重复创建它们。以小写字母开始类型变量,这几乎是Java变量的惯例。您上载的类需要一个结束括号。正如AndyTurner在上面的注释中已经提出的,您可能需要考虑使用<代码> SET>代码>而不是<代码> ARARYLISTAB/COD>,它有点干净,因为<代码> SET/COD>不能包含重复元素。你可以在我原来的帖子里找到我的
目录
课程。
  public class Movie
  {
      private String title;
      private int year;
      private int price;
      private List<Genre> genres;

      Movie(String title, int year, List<Genre> genres, int price){
          this.title = title;
          this.year = year;
          this.genres = genres;
          this.price = price;
      }
  }
public class Catalogue
{
    private Kiosk kiosk;
    private List<Movie> moviesAvailable = new ArrayList<Movie>();
    private Set<Genre> genres =  new HashSet<Genre>();

    Catalogue(Kiosk kiosk){
    }

    Catalogue(){
        Genre sciFi = new Genre("SciFi");
        Genre drama = new Genre("Drama");
        Genre crime = new Genre("Crime");
        genres.add(sciFi);
        genres.add(drama);
        genres.add(crime);
        moviesAvailable.add(new Movie("Matrix", 1999, sciFi, 3));
        moviesAvailable.add(new Movie("Titanic", 1997, drama, 4));
        moviesAvailable.add(new Movie("The Silence of the Lambs", 1991, crime, 3));
        moviesAvailable.add(new Movie("Jurassic Park", 1993, sciFi, 4));
        moviesAvailable.add(new Movie("Terminator 2", 1991, sciFi, 3));
    }
}