播放列表插入数据,在PlayList类中的7功能,显示播放列表中的所有歌曲怎么写。

播放列表插入数据,在PlayList类中的7功能,显示播放列表中的所有歌曲怎么写。

//感觉PlayList类中的查询7的功能名字和歌曲集合没关系

//呢。麻烦老师给写下,播放列表的1和7的功能,实在

//是晕了两天了。做不下去了。总觉得题出的有问题呢。

//播放列表类

public class PlayList {

/*

* String playListName:播放列表名称 List musicList:播放列表中的歌曲集合

*/

private String playListName;

private List<Song> musicList = new ArrayList<Song>();

Scanner sc = null;

// 无参构造

public PlayList() {

}

// 有参构造

public PlayList(String playListName) {

this.playListName = playListName;

}

// set()/get()方法

public String getPlayListName() {

return playListName;

}

public void setPlayListName(String playListName) {

this.playListName = playListName;

}

public List<Song> getMusicList() {

return musicList;

}

public void setMusicList(List<Song> musicList) {

this.musicList = musicList;

}

// 显示播放列表中所有歌曲方法

public void displayAllSong() {

System.out.println("显示播放列表中的所有歌曲");

System.out.println("请输入要显示的播放列表名称:");

sc = new Scanner(System.in);

String listName = sc.next();

if (this.getPlayListName().equals(listName)) { // 这里名字和musicList没有直接关系

for (int i = 0; i < musicList.size(); i++) {

System.out.println(musicList.get(i).toString());

}

} else {

System.out.println("没找到你输入的列表名称");

}}}

// 测试播放列表类方法

public void testPlayList() {

Scanner sc = null;

PlayList playList = new PlayList("主播放列表");

Map<String, PlayList> playListMap = new HashMap<String, PlayList>();

PlayListCollection plc = null;

Song song = new Song();

List<Song> musicList = null;

TestDemo td = new TestDemo();

// 将歌曲添加到主播放列表

// **************************************************************************************

musicList = new ArrayList<Song>();

System.out.println("将歌曲添加到主播放列表");

/* System.out.println("请输入要添加的歌曲数量:");

sc = new Scanner(System.in);

int songNum = sc.nextInt();


for (int c11 = 1; c11 <= songNum; c11++) {

System.out.println("请输入第" + c11 + "首歌曲");

System.out.println("请输入首歌曲的id:");

sc = new Scanner(System.in);

String songId = sc.next();

System.out.println("请输入歌曲的名称:");

sc = new Scanner(System.in);

String songName = sc.next();

System.out.println("请输入演唱者:");

sc = new Scanner(System.in);

String songSinger = sc.next();

song = new Song(songId, songName, songSinger);

playList.addToPlayList(song);

}

*/

// 测试用数据

Song song1 = new Song("s001", "喜欢1", "3333");

Song song2 = new Song("s002", "喜欢2", "6666");

Song song3 = new Song("s003", "喜欢3", "9999");

playList.addToPlayList(song1);

playList.addToPlayList(song2);

playList.addToPlayList(song3);


// 通过keyset查找播放器主播放列表并把歌曲添加到主播放列表

Set<String> keySet = playListMap.keySet();

for (String key : keySet) {

if (key.equals("主播放列表")) {

System.out.println("找到了!" + "键值对为:" + key + "-" + playListMap.get(key));

playListMap.put("主播放列表", playList);

break;

}

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

首先说一下PlayList类中的displayAllSong()这个方法,PlayList类主要功能就是对歌曲进行管理,这里面有个集合存放了歌曲的信息,所以遍历这个集合就可以得到所有的歌曲了。那么,如果去定义一个PlayList的对象,那么这个对象就是一个具体的播放列表,可以向这个播放列表中添加歌曲并显示。如果这些都理解没问题,那么就是关于如何通过播放器去找到要显示所有歌曲的播放列表问题了。那么这些代码不写到PlayList类中,因为这是另外的业务功能了,和播放列表内部的歌曲没有直接关系。这段代码需要写到主方法里,比如case 7语句的后面,也就是进行歌曲显示的case语句后面。

在主方法的一开始肯定要有一个PlayListCollection的对象,用来存放播放列表的。那么这个对象只有一个,假设对象名为plc。case 7后面要做的就是输入播放列表名称,然后去plc中查询播放列表是否存在,返回结果应该是PlayList的对象,如果为null表示没找到,如果不为null则表示找到了。(PlayListCollection类中应该定义了该方法,直接调用即可)。

如果找到了,返回的就是要显示所有歌曲的PlayList对象,通过这个对象去调用displayAllSong()方法就显示了该播放列表中的所有歌曲的信息了。

这里面需要注意的是,哪个PlayList对象去调用displayAllSong();方法,那么显示的就是哪个对象(播放列表)中的所有歌曲信息。

祝学习愉快!

NeilSK 2018-01-10 21:30:59

建议你换一下思路哦, Song, PlayList, PlaylistCollection 这3个model类里面的方法都不需要去考虑逻辑, 只要实现基础功能就行.

逻辑应该都是在Test类中去添加. 例子:

PlayList类中:

/**
	 * 将歌曲添加至播放列表
	 * @param song
	 */
	public void addToPlayList(Song song){
		musicList.add(song);
	}
	/**
	 * 显示播放列表中所有歌曲
	 */
	public void displayAllSong(){
		for(Song song:getMusicList()){
			System.out.println(song);
		}
	}
	/**
	 * 通过ID查询歌曲
	 * @param id
	 * @return
	 */
	public Song searchSongById(String id){	
		for(Song song:musicList){
			if(song.getId().equals(id)){		
				return song;
			}
		}
		return null;
	}

Test类中:

/**
	 * 播放列表管理菜单
	 */
	public void playListMenu() {

		System.out.println("**************************");
		System.out.println("                **播放列表管理**");
		System.out.println("                1--将歌曲添加到主播放列表");
		System.out.println("                2--将歌曲添加到普通播放列表");
		System.out.println("                3--通过歌曲ID查询播放列表中的歌曲");
		System.out.println("                4--通过歌曲名称查询播放列表中的歌曲");
		System.out.println("                5--修改播放列表中的歌曲");
		System.out.println("                6--删除播放列表中的歌曲");
		System.out.println("                7--显示指定播放列表中的歌曲");
		System.out.println("                8--导出歌单");
		System.out.println("                9--返回上一级菜单");
		System.out.println("**************************");
		System.out.println("请输入对应数字进行操作");

		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		switch (n) {

功能7:

                case 7:
			System.out.println("请输入要显示歌曲的播放列表名称");
			String toShowlistName = sc.next();
			if (player.searchPlayListByName(toShowlistName) == null) {
				System.out.println("此播放列表是空的");
			} else {
				player.searchPlayListByName(toShowlistName).displayAllSong();
			}
			playListMenu();
			break;


  • 提问者 慕先生0521137 #1
    谢谢你,你的回答帮助了我。
    2018-01-12 08:11:43
THappy 2018-01-10 19:37:09

7--显示播放列表中的所有歌曲就是循环遍历集合,将集合中的元素依次输出。

1和7对应的方法思路如下,可以先参考试着写一下,如果有问题可以提出来老师和同学都会帮助解答~

1添加歌曲到主播放列表:首先创建一个主播放列表并添加到播放器中,在添加歌曲到主播放列表中时,先提示用户要添加的歌曲数量,根据输入的数量循环输入歌曲,然后提示并输入歌曲id,歌曲名称,演唱者,创建歌曲对象并且将这三个参数传入,最后将这个歌曲对象添加到主播放列表中。

7播放器中显示播放列表中的所有歌曲方法:首先提示并输入要显示的播放列表的名称,判断播放器集合中是否包含此播放列表,如果包含则调用PlayList类中的displayAllSong()方法来显示此播放列表中的所有歌曲,不包含则提示此播放列表不存在。

而播放列表类中displayAllSong()方法中只写循环遍历并输出歌曲的代码就可以了~

另外,建议同学将全部代码贴出来,方便根据你的代码定位问题,帮助你解答~

祝学习愉快~

  • 提问者 慕先生0521137 #1
    7播放器中显示播放列表中的所有歌曲方法:首先提示并输入要显示的播放列表的名称,判断播放器集合中是否包含此播放列表,如果包含则调用PlayList类中的displayAllSong()方法来显示此播放列表中的所有歌曲,不包含则提示此播放列表不存在。 以上内容中 :显示输入播放列表名称所包含的歌曲,7的显示方法没有参数传入,我需要用到PlayList类中播放列表名称String playListName,和存放歌曲的 List musicList 其中 musicList是通过1的添加方法参数传进来添加到musicLis中了。那playListName是怎么传进来,有参构造吗?传入PlayList类的playListName和musicLis没有对应关系吧?判断播放器集合中是否包含此播放列表是在PlayList类外面判断播放器类的Map,如果包含则调用PlayList类中的displayAllSong()方法,这个方法在PlayList类中怎么知道类中的playListName对应的是哪个musicList,而播放列表名和歌曲都存在了 播放器类的Map集合里,不用PlayList类的displayAllSong()方法,就直接取集合取名字并打印value值就可以了,用PlayList类的displayAllSong()方法就觉得思路不对呢。
    2018-01-10 22:14:35
  • 提问者 慕先生0521137 #2
    写的有点多,麻烦你帮我看看分析分析,我自己想不通,如果包含则调用PlayList类中的displayAllSong()方法,这个方法的根据播放列表名字来显示啊,在方法里怎么根据名字,名字怎么才能在displayAllSong()方法中用,代码限制8000,我也想都贴出来。
    2018-01-10 22:21:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师