У меня есть класс, называемый CD
со следующими частными переменными:Динамическое создание нового экземпляра в Java
private String artist = "";
private String year = "";
private String albumName = "";
private ArrayList<String> songs = new ArrayList<String>();
Этот класс используется для хранения входных данных, которые в этом формате:
Led Zeppelin
1979 In Through the Outdoor
-In the Evening
-South Bound Saurez
-Fool in the Rain
-Hot Dog
-Carouselambra
-All My Love
-I'm Gonna Crawl
У меня есть класс CDParser
, который отвечает за разбор файла с именем sample.db
по строкам, чтобы сохранить его в нашем объекте CD
. После разбора, в CD
объекте, после его инициализации с CD newCD = new CD()
имеет следующую структуру:
artist = "Led Zeppelin"
year = "1979"
albumName = "In Through the Outdoor"
songs = {"-In the Evening", "-South Bound Saurez", "-Fool in the Rain", "-Hot Dog"}
сейчас .. Для этого проекта, sample.db
содержит много альбомов, которые выглядят следующим образом:
Led Zeppelin
1979 In Through the Outdoor
-In the Evening
-South Bound Saurez
-Fool in the Rain
-Hot Dog
-Carouselambra
-All My Love
-I'm Gonna Crawl
Led Zeppelin
1969 II
-Whole Lotta Love
-What Is and What Should Never Be
-The Lemon Song
-Thank You
-Heartbreaker
-Living Loving Maid (She's Just a Woman)
-Ramble On
-Moby Dick
-Bring It on Home
Bob Dylan
1966 Blonde on Blonde
-Rainy Day Women #12 & 35
-Pledging My Time
-Visions of Johanna
-One of Us Must Know (Sooner or Later)
-I Want You
-Stuck Inside of Mobile with the Memphis Blues Again
-Leopard-Skin Pill-Box Hat
-Just Like a Woman
-Most Likely You Go Your Way (And I'll Go Mine)
-Temporary Like Achilles
-Absolutely Sweet Marie
-4th Time Around
-Obviously 5 Believers
-Sad Eyed Lady of the Lowlands
I до сих пор смогли разобрать все три разных альбома и сохранить их в моем объекте CD
, но столкнулись с блокпостом, где я просто сохраняю все три альбома в одном и том же объекте newCD
.
Мой вопрос - есть ли способ программно инициализировать мой CD
конструктор, который будет соответствовать формату newCD1
, newCD2
, newCD3
и т.д., как я разобрать sample.db
?
Что это означает, как я разобрать этот конкретный файл:
newCD1
будет альбомомIn Through the Outdoor
(и его соответствующие частные вары)newCD2
будет альбомомII
(и его соответствующие частные вары)newCD3
будет альбомBlonde on Blonde
и т. д.
Это умный способ сделать это? Или вы могли бы предложить мне лучший способ?
EDIT:
Прикрепленный мой анализатор кода. ourDB
является ArrayList
, содержащий каждую линию sample.db
:
CD newCD = new CD();
int line = 0;
for(String string : this.ourDB) {
if(line == ARTIST) {
newCD.setArtist(string);
System.out.println(string);
line++;
} else if(line == YEAR_AND_ALBUM_NAME){
String[] elements = string.split(" ");
String[] albumNameArr = Arrays.copyOfRange(elements, 1, elements.length);
String year = elements[0];
String albumName = join(albumNameArr, " ");
newCD.setYear(year);
newCD.setAlbumName(albumName);
System.out.println(year);
System.out.println(albumName);
line++;
} else if(line >= SONGS && !string.equals("")) {
newCD.setSong(string);
System.out.println(string);
line++;
} else if(string.isEmpty()){
line = 0;
}
}
Непонятно, что вы пытаетесь сделать. также, если возможно, добавить текущий фрагмент кода – Pranalee
Кажется, что вы не правильно зацикливаетесь между объектами. Покажите нам больше кода, который у вас есть. – elias
Вы ищете массивы и списки? – biziclop