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