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

T D*_*zle 0 java arraylist

我对电影的ArrayList,它需要的电影titleyeargenreprice为参数。有与没有错误titleyearprice。我有3个班,MovieCatalogue,和Genre以及类的代码Genre是给我提供的。错误似乎与一起发生Genre

我没有更改Genre类,但是我尝试使用字符串,但是它带出了错误,只有在我输入时才会出现错误null

我希望能够添加到ArrayList中,但是出现错误genre

请原谅我缺乏理解,这(从技术上来说)是我编程的第一年。

The*_*bit 7

您的Movie构造函数仅将一个Genre作为参数,而应将其List<Genre>作为参数:

Movie(String title, int year, Genre genre, int price){
}
Run Code Online (Sandbox Code Playgroud)

应该:

Movie(String title, int year, List<Genre> genres, int price){
}
Run Code Online (Sandbox Code Playgroud)

完整电影课:

  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;
      }
  }
Run Code Online (Sandbox Code Playgroud)

编辑:如果您不能更改Movie类,则意味着您只能通过一个,Genre而不能List。因此,您必须选择要通过的流派:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您也许还应该使用Set而不是List(两次在该列表中都没有流派)。 (5认同)