如何在循环中创建新对象?

时间:2015-10-16 14:45:52

标签: java arrays object

首先,我是java新手所以请怜悯。 我创建了一个Movie类和一个MovieList类。 MovieList类基本上是一个应该包含电影对象的数组

public class MovieList{
//fields
private Movie[] movieList = new Movie[100];

现在,在MovieList类中我有一个方法添加我应该在main中调用的电影。现在我的问题是,如何在for循环中创建我应该添加到MovieList的新Movie对象。就像创建一个未定义数量的电影对象,从控制台获取它们的字段。 我试过Movie movie1 = new Movie();但是在for循环中它会被覆盖,我的MovieList最终只包含我从控制台输入的最后一个movie1。 我也尝试在main中创建一个包含空电影对象的新数组,并且我会在for循环中设置它们的字段,但是数组也是有限的,我似乎无法增加它。 无论如何我可以获得一个电影movie2 =新电影()......等等但是使用一个变量用于" movie2"我可以以某种方式改变为movie3?

public static void shortMovie(Movie[] arrayMovie,int x,int y){
  Scanner console = new Scanner(System.in);
  String title;
  int id;
  System.out.println("Now please enter the movies, just name and ID");
        for(int i=x; i<y; i++){
           System.out.println("Please enter the detail of the movie in this order");
           System.out.println("Please enter the title of the movie");
           title = console.next();
           System.out.println("Please enter the id of the movie");
           id = console.nextInt();
           arrayMovie[i].setTitle(title);
           arrayMovie[i].setId(id);
           }

} 我在main中使用这个方法,还有一个包含空电影对象的额外数组,但数组最终会结束。

3 个答案:

答案 0 :(得分:0)

首先,如果我正确理解你的问题,你将需要一个Collection对象,最好是List来动态增加大小。

然后你的循环添加看起来像这样的电影。

            int index=0;       
            List<Movie> movieList = new LinkedList<Movie>();
            System.out.println("Enter the movie info ID and Title");
            while (index++ < size) {
                Movie movie = new Movie();
                System.out.println("Movie Title:");
                movie.setTitle(console.next());
                System.out.println("Movie Id:");
                movie.setId(console.nextInt());
                movieList.add(movie);
            }
            System.out.println(movieList.size()); // Count of movie added

希望这能解决你的问题。

答案 1 :(得分:0)

你应该先制作电影。

&#34; shortMovie&#34;方法,尝试:

arrayMovie[i] = new Movie();
arrayMovie[i].setTitle(title);
arrayMovie[i].setId(id);
...

答案 2 :(得分:0)

您可能需要ArrayList(或其他动态集合)而不是数组:

List<Movie> movieList = new ArrayList<Movie>();

然后,您将能够在循环中的控制台中执行以下操作:

for(int i=x; i<y; i++){
    System.out.println("Please enter the detail of the movie in this order");
    System.out.println("Please enter the title of the movie");
    title = console.next();
    System.out.println("Please enter the id of the movie");
    id = console.nextInt();
    Movie movie = new Movie();
    movie.setTitle(title);
    movie.setId(id);
    movieList.add(movie);
}

或者,如果您确实想要使用数组,那么看起来您所缺少的就是在设置值之前初始化每个数组条目:

arrayMovie[i] = new Movie();
arrayMovie[i].setTitle(title);
arrayMovie[i].setId(id);