Java 向对象中包含的数组列表添加数据

Java 向对象中包含的数组列表添加数据,java,Java,我目前有三个主要课程。包含对象及其getter和setter的tv series类: public class TVSeries { private String title; private Genre genre; private Rating rating; private int numOfEps; private ArrayList<String> actor = new ArrayList<String>(); private ArrayList<Int

我目前有三个主要课程。包含对象及其getter和setter的tv series类:

public class TVSeries {
private String title;
private Genre genre;
private Rating rating;
private int numOfEps;
private ArrayList<String> actor = new ArrayList<String>();
private ArrayList<Integer> listOfReviews = new ArrayList<Integer>();

public TVSeries(String title, Genre genre, Rating rating, int numOfEps, ArrayList<String> actor, ArrayList<Integer> listOfReviews) {
    this.title = title;
    this.genre = genre;
    this.rating = rating;
    this.numOfEps = numOfEps;
    this.actor = actor;
    this.listOfReviews = listOfReviews;
公共类电视系列{
私有字符串标题;
私人体裁;
私人评级;
私人国际货币基金组织;
private ArrayList actor=new ArrayList();
private ArrayList listOfReviews=新建ArrayList();
公共电视系列(字符串标题、流派、评级、整数、ArrayList演员、ArrayList视图){
this.title=标题;
这个。流派=流派;
这个。评级=评级;
this.numOfEps=numOfEps;
这个演员=演员;
this.listofreewiews=listofreewiews;
一个系列库类,它是一个仅由arraylist tv series对象组成的对象:

public class SeriesLibrary {
private ArrayList<TVSeries> tvSeries = new ArrayList<TVSeries>();

public SeriesLibrary(ArrayList<TVSeries> tvSeries) {
    this.tvSeries = tvSeries;
}

public ArrayList<TVSeries> getTvSeries() {
    return tvSeries;
}

public void setTvSeries(ArrayList<TVSeries> tvSeries) {
    this.tvSeries = tvSeries;
}

public TVSeries addTVSeries(Scanner sc) {
    System.out.println("Add a new TV Series");
    System.out.println("------------------------------");
    System.out.print("Please enter the TV series' Title: ");
    String title = sc.nextLine();
    System.out.print("Please enter the TV series' Genre: ");
    String strGenre = sc.nextLine();
    System.out.print("Please enter the TV series' Age Rating: ");
    String strRating = sc.nextLine();
    System.out.print("Please enter the number of Episodes in the TV Series: ");
    int numOfEps = sc.nextInt();
    sc.nextLine();
    System.out.println(title + " will be set up with no actors or ratings. These can be added later.");
    ArrayList<String> emptyActors = new ArrayList<String>();
    ArrayList<Integer> emptyReviews = new ArrayList<Integer>();
    Genre genre = Genre.valueOf(strGenre);
    Rating rating = Rating.valueOf(strRating);
    TVSeries newSeries = new TVSeries(title, genre, rating, numOfEps, emptyActors, emptyReviews);
    return newSeries;
} 
公共类系列库{
private ArrayList tvSeries=new ArrayList();
公共系列图书馆(ArrayList系列){
this.tvSeries=tvSeries;
}
公共ArrayList getTvSeries(){
回归电视系列;
}
公共无效设置tvSeries(ArrayList tvSeries){
this.tvSeries=tvSeries;
}
公共电视系列添加电视系列(扫描仪sc){
System.out.println(“添加新电视剧”);
System.out.println(“-----------------------------------”);
System.out.print(“请输入电视剧的标题:”);
字符串title=sc.nextLine();
System.out.print(“请输入电视剧的类型:”);
字符串strGenre=sc.nextLine();
System.out.print(“请输入电视剧的年龄分级:”);
字符串strRating=sc.nextLine();
System.out.print(“请输入电视连续剧的集数:”);
int numOfEps=sc.nextInt();
sc.nextLine();
System.out.println(title+“将设置为没有演员或收视率。这些可以稍后添加。”);
ArrayList emptyActors=新的ArrayList();
ArrayList emptyReviews=新建ArrayList();
流派=流派。价值(strGenre);
额定值=额定值(额定值);
电视系列新闻系列=新电视系列(标题、流派、评级、numOfEps、emptyActors、emptyReviews);
返回新闻系列;
} 
还有一个tester类。我将代码添加到菜单中,但我真的不知道如何启动它

我在series library类中有一个方法,允许用户添加信息以创建新的电视剧,该方法返回他们新创建的对象


在测试仪中,我将使用什么代码将此新值添加到对象(例如称为seriesLibrary)的数组列表中。我必须创建新方法吗?我是否更改当前方法?

我不确定是否正确理解您的问题,但您可以执行以下操作:

ArrayList<TVSeries> tvSeriesLibrary = seriesLibrary.getTvSeries();
tvSeriesLibrary.add(newSeriesToAdd);
seriesLibrary.setTvSeries(tvSeriesLibrary);
ArrayList tvSeriesLibrary=seriesLibrary.getTvSeries();
添加(newSeriesToAdd);
setTvSeries(tvSeriesLibrary);

这是假设
seriesLibrary
是您已经初始化的
seriesLibrary
对象,
newSeriesToAdd
是从创建新的
TVSeries
对象返回的对象。

当您的方法请求一个
扫描仪作为参数时,您可以创建一个文件(txt文件)当您在方法中键入所需的所有信息时,请创建一个读取文件的
扫描仪
,然后将该
扫描仪
传递给您的方法。这是您特定问题的解决方案

但我建议您更改方法。因为需要从I/O通道(文件、流、stdin等)读取/扫描数据的方法的可测试性较低我总是习惯于将程序的扫描/读取部分与表示某种逻辑操作的代码分开。因此,我的建议是创建一个单独的函数,读取/扫描您请求的数据,然后将所有这些数据传递给处理这些数据的方法(在您的情况下,使用基于该数据的正确值创建
TVSeries

public TVSeries addTVSeriesFromInput(Scanner sc) {
    System.out.println("Add a new TV Series");
    System.out.println("------------------------------");
    System.out.print("Please enter the TV series' Title: ");
    String title = sc.nextLine();
    System.out.print("Please enter the TV series' Genre: ");
    String strGenre = sc.nextLine();
    System.out.print("Please enter the TV series' Age Rating: ");
    String strRating = sc.nextLine();
    System.out.print("Please enter the number of Episodes in the TV Series: ");
    int numOfEps = sc.nextInt();
    sc.nextLine();
    System.out.println(title + " will be set up with no actors or ratings. These can be added later.");
    return addTVSeries(title, strGentre, strRating, numOfEps);
}

public TVSeries addTVSeries(String title, String strGenre, String strRating, int numOfEps){ 
    ArrayList<String> emptyActors = new ArrayList<String>();
    ArrayList<Integer> emptyReviews = new ArrayList<Integer>();
    Genre genre = Genre.valueOf(strGenre);
    Rating rating = Rating.valueOf(strRating);
    TVSeries newSeries = new TVSeries(title, genre, rating, numOfEps, emptyActors, emptyReviews);
    return newSeries;
}
public TVSeries addTVSeriesFromInput(扫描仪sc){
System.out.println(“添加新电视剧”);
System.out.println(“-----------------------------------”);
System.out.print(“请输入电视剧的标题:”);
字符串title=sc.nextLine();
System.out.print(“请输入电视剧的类型:”);
字符串strGenre=sc.nextLine();
System.out.print(“请输入电视剧的年龄分级:”);
字符串strRating=sc.nextLine();
System.out.print(“请输入电视连续剧的集数:”);
int numOfEps=sc.nextInt();
sc.nextLine();
System.out.println(title+“将设置为没有演员或收视率。这些可以稍后添加。”);
返回addTVSeries(标题、主题、主题、数字);
}
公共TVSeries addTVSeries(字符串标题、字符串字符串字符串、字符串字符串字符串、整数)
ArrayList emptyActors=新的ArrayList();
ArrayList emptyReviews=新建ArrayList();
流派=流派。价值(strGenre);
额定值=额定值(额定值);
电视系列新闻系列=新电视系列(标题、流派、评级、numOfEps、emptyActors、emptyReviews);
返回新闻系列;
}

PS:我觉得很奇怪,你的方法被称为
addTVSeries
,但它只创建了一个新的
TVSeries
对象,而没有将它添加到列表中
TVSeries

,因为某种原因,以前的评论和我的一样被删除了,我编辑了这篇文章以包含我当前的代码。你检查过answ吗如果你对其中一个答案感到满意,请将其标记为解决方案。否则,请评论并说明问题所在!