我正在尝试使用用户输入将元素添加到ArrayList中。问题是当我尝试添加一些东西并要求将其列出时,它没有显示在列表中。
我认为这是read方法的问题,但是我不确定它是否有问题。另一件事是事实,添加元素的方法不在循环中,我尝试使用循环,但仍然无法正常工作。
有一个带有构造器的电影类,该构造器具有title
,year
,genre
,price
的参数和toString方法。
预期结果:添加电影后,它应列出添加的电影。 实际结果:add方法要求输入,但是当我使用list方法时,它不会列出我添加的内容。
答案 0 :(得分:7)
new Catalogue().addMovie();
每次要添加Catalogue
时,您都在创建一个新的Movie
,而您从不引用它。
相反,请将所有电影添加到同一Catalogue
:
private void addMovie(Catalogue c) {
c.addMovie();
}
private void listMovie(Catalogue c) {
c.listMovie();
}
答案 1 :(得分:0)
那是因为'new'关键字。您需要在此处使用单例“目录”对象。
class Kiosk {
private static Catalogue catalogue;
public Catalogue getCatalogue() {
if(Objects.isNull(catalogue)){
catalogue = new Catalogue();
}
return catalogue; //will return singleton catalogue object
}
private void addMovie() {
getCatalogue().addMovie();
}
private void listMovie() {
getCatalogue().listMovie();
}
}
答案 2 :(得分:0)
在信息亭中,您必须保留目录的一个实例。 我不知道您打算在哪里创建Catalog实例,所以添加了2个构造函数:
public class Kiosk {
private Catalogue cat;
public Kiosk() {
this(new Catalogue());
}
public Kiosk(Catalogue catalogue) {
this.cat=catalogue;
}
private void addMovie() {
cat.addMovie();
}
private void listMovie() {
cat.listMovie();
}
}