2016-12-04 84 views
-1

我目前有三个主要类。电视剧类,其中包含一个对象,它的getter和setter方法:将数据添加到对象中包含的数组列表中

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; 

一系列的库类,这是由只是一个ArrayList的电视连续剧对象的对象:

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; 
} 

以及测试类。我将代码添加到菜单中,但我不知道如何启动它。

我有一个系列库类中的方法,它允许用户添加信息来创建一个新的电视剧,该方法返回他们新创建的对象。

在测试仪内部,我会用什么代码将这个新值添加到对象中的数组列表中,例如称为seriesLibrary。我需要创建一个新的方法吗?我是否改变我目前的方法?

+0

对于一些之所以前面的评论已经被删除了,以及我的,我已经编辑了这篇文章,以包含我当前的代码。 – AceVenturos

+0

你检查了下面的答案吗?如果您对其中一个答案感到满意,请将其标记为解决方案。否则发表评论并说出了什么问题! –

回答

0

我不知道如果我正确地理解你的问题,但你可以做到以下几点:

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

这是假设seriesLibrary是你已经初始化SeriesLibrary对象和newSeriesToAdd是将对象从创建一个新的TVSeries对象返回。

0

由于您的方法请求Scanner作为参数,您可以创建一个文件(txt文件),在其中输入您在方法中询问的所有信息,创建一个读取文件的文件,然后通过那Scanner给你的方法。这是针对您的特定问题的解决方案。

我会建议你改变你的方法。由于需要从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; 
} 

PS:我觉得很奇怪,你的方法被调用addTVSeries但它只能创建一个新的TVSeries对象内部消除它添加到列表中tvSeries

相关问题