По-моему, с List
было бы проще управлять, поэтому вы можете добавить столько Albums
, сколько захотите, однако, поскольку для постановки задачи требуется Array
Я сделал пример Band
класс.
Я также включил метод main
для проверки программы в нижней части класса Band
:
public class Band {
private int totalAlbums;
private Album[] albums;
private int currentNumberOfAlbums;
public Band(int totalAlbums) {
this.totalAlbums = totalAlbums;
this.albums = new Album[totalAlbums];
this.currentNumberOfAlbums = 0;
}
public Band(Album[] albums) {
this.totalAlbums = albums.length;
this.albums = albums;
this.currentNumberOfAlbums = this.totalAlbums;
}
public void addNewAlbum(String titulo, int temas, int ano) {
if (this.currentNumberOfAlbums == totalAlbums) {
System.out.println("Warning: Cannot add any more albums, limit reached.");
return;
}
this.albums[this.currentNumberOfAlbums++] = new Album(titulo, temas, ano);
}
public void printAlbums() {
for (Album a : this.albums) {
a.mostraAlbum();
}
}
public static void main(String [] args) {
Band b = new Band(3);
b.addNewAlbum("The First", 4, 2001);
b.addNewAlbum("The Second", 98, 2055);
b.addNewAlbum("The Finale", 12, 2011);
b.addNewAlbum("The Extra", 12, 2111);
b.printAlbums();
}
}
В этом коде есть несколько вещей, которые нужно искать.
Во-первых, для решения вашего прямого вопроса вы можете просто использовать пользовательский класс в качестве массива, как любой другой класс / примитив с Album[]
.
Во-вторых, вам потребуется Band
конструктор, который создает массив Album
на основе переданного ему целого числа, чтобы вы знали, сколько альбомов ограничено. Вы можете увидеть это с помощью строки this.albums = new Album[totalAlbums];
.
Далее вам нужен способ добавить новый Album
в массив Album[]
. Это можно сделать несколькими различными способами, но я выбрал способ addNewAlbum(String, int, int)
, чтобы сделать это для этого примера, который также будет увеличивать currentNumberOfAlbums
на 1
каждый раз, когда добавляется новый альбом. Это полезно, чтобы вы знали, когда Album
пытаются добавить, даже если totalAlbums
уже заполнены! Это предотвратит ArrayIndexOutOfBoundsException
в вашем коде, если addNewAlbum
вызывается слишком много раз.
Наконец, в addNewAlbum
вам нужно вызвать ваш Album
конструктор с помощью new Album(titulo, temas, ano)
.
В моем примере main
создается Band
с ограничением 3
альбомов, и в него пытаются добавить 4
альбомы, при этом первые 3 добавляются успешно, а четвертый не добавляется, но вместо этого печатая предупреждение о том, что он выходит за пределы.
Я также добавил метод printAlbums()
, который будет использовать ваш mostraAlbum()
для печати каждого Album
в массиве albums
.
Вывод:
Warning: Cannot add any more albums, limit reached.
The First (editado em 2001; tem 4 temas)
The Second (editado em 2055; tem 98 temas)
The Finale (editado em 2011; tem 12 temas)
РЕДАКТИРОВАНИЕ:
Я добавил конструктор Band(Album[] albums)
, это можно вызвать с помощью:
Album[] albums = new Album[3];
//Add your albums into this variable
Band b = new Band(albums);