gpt4 book ai didi

Java:CD 库教程 - 哪种数据类型来存储 CD、艺术家和歌曲?

转载 作者:行者123 更新时间:2023-12-01 15:39:49 26 4
gpt4 key购买 nike

创建了以下类,暂时没有接口(interface)/抽象类:

  1. 测试 - 用于创建测试数据
  2. 音乐 - 应存储所有 CD
  3. CD - 应存储艺术家和 CD 标题 + 所有歌曲
  4. 艺术家 - 仅包含字符串名称
  5. 歌曲 - 包含默认构造函数(艺术家 anArtist、字符串歌曲标题、字符串持续时间)
  6. 持续时间 - 用于歌曲持续时间和后续计算

我尝试了 ArrayList,但当我添加另一张 CD 时它会被覆盖。我需要一种数据类型来存储数据并链接到另一个数组。例如:存储 CD1 的艺术家和标题,并链接到包含 CD1 中所有歌曲的另一个数组。

谢谢

来自测试类的代码:

Artist aArtist = new Artist("artist1");
CD aCD = myMusic.addCD(aArtist, "CD1");
aCD.addSong(aArtist, "song1", "1:00");

aArtist = new Artist("artist2");
CD aCD = myMusic.addCD(aArtist, "CD2"); //Overwrites arraylist from CD1
aCD.addSong(aArtist, "song2", "2:00");

我在音乐类和 CD 类中更改了我的 ArrayList...我认为有一种更简单的方法来解决该教程,但这里是代码:(输出所有保存的歌曲和 CD 标题)

音乐类:

    import java.util.ArrayList;

public class Music {
private ArrayList<CD> myCDs = new ArrayList<CD>();

public CD addCD(Artist anArtist, String cdTitle) {

CD aCD = new CD(anArtist, cdTitle);
myCDs.add(aCD);
return aCD;
}

public void showData() {

for (int i = 0; i < myCDs.size(); i++) {
for (int j = 0; j < myCDs.get(i).getMyCD().size(); j++) {

System.out.println(myCDs.get(i).getMyCD().get(j).getSong());
}
}

}
}

等级CD:

  import java.util.ArrayList;

public class CD {
private String cdTitle;
private ArrayList<Song> myCD = new ArrayList<Song>();

public CD(Artist aArtist, String cdTitle) {
setMyCD(aArtist, cdTitle);
}

public ArrayList<Song> getMyCD() {
return myCD;
}

public String getMyCDtitle() {
return cdTitle;
}

public void setMyCD(Artist anArtist, String cdTitle) {
this.cdTitle = anArtist.getName() + ": " + cdTitle;
}

public void addSong(Artist anArtist, String aTitle, String aDuration) {

myCD.add(new Song(anArtist, aTitle, aDuration));

}
}

类(class)歌曲:

 public class Song {
private String song;

public String getSong() {
return song;
}

public void setSong(String song) {
this.song = song;
}

public Song(Artist anArtist, String songtitle, String aDuration) {
Duration songDuration = new Duration(aDuration);
setSong(anArtist.getName() + ": " + songtitle + " ("
+ songDuration.getSongDuration() + ")");

}

}

一般来说:您将如何解决这样的项目?我会很感激每一个建议或 uml 图。

最佳答案

这可能是 aArtist = new Artist("artist2"); 的问题
CD aCD = myMusic.addCD(aArtist, "CD2");//覆盖CD1中的数组列表
aCD.addSong(aArtist, "song2", "2:00");
您使用相同的 Artist 对象。如果您发布您的 addCD 方法实现,它将对我们更加开放。

关于Java:CD 库教程 - 哪种数据类型来存储 CD、艺术家和歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com