Во-первых, я новичок в java, поэтому, пожалуйста, помилуйте. Я создал класс Movie и класс MovieList. Класс MovieList - это в основном массив, который должен содержать объекты фильма.

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

Теперь в классе MovieList у меня есть метод добавления фильмов, который я должен вызывать в основном. Теперь моя проблема в том, как создать новые объекты Movie, которые нужно добавить в MovieList в цикле for. Как создание неопределенного количества объектов фильма, которые получают свои поля из консоли. Я пробовал Movie movie1 = new Movie (); но внутри цикла for он перезаписывается, и мой MovieList содержит только последний фильм1, который я ввел с консоли. Я также попытался создать новый массив в основном, который будет содержать пустые объекты фильма и что я бы установил их поля в цикле for, но массив также ограничен, и я не могу увеличивать его. Есть ли способ получить Movie movie2 = new Movie () ... и так далее, но использовать переменную для «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);
           }

} Я использую этот метод в основном и в дополнительном массиве, который содержит пустые объекты фильма, но в конечном итоге массив заканчивается.

-2
Andrei Ungureanu 16 Окт 2015 в 17:45

3 ответа

Лучший ответ

Сначала вы должны создать фильм.

В методе shortMovie попробуйте:

arrayMovie[i] = new Movie();
arrayMovie[i].setTitle(title);
arrayMovie[i].setId(id);
...
0
0FiRE0 16 Окт 2015 в 14:59

Прежде всего, если я правильно понимаю ваш вопрос, вам понадобится объект 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

Надеюсь, это решит вашу проблему.

0
Sharath Bhaskara 16 Окт 2015 в 15:17

Вероятно, вам нужен 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);
0
jonk 16 Окт 2015 в 15:03