将歌曲添加到普通列表

将歌曲添加到普通列表

测试类中代码

http://img1.sycdn.imooc.com//climg/5aa1378500015ee105850393.jpg

播放列表类添加歌曲代码

http://img1.sycdn.imooc.com//climg/5aa137bb0001043705940445.jpg

http://img1.sycdn.imooc.com//climg/5aa137bb00018e0405750475.jpg

请问测试类中将歌曲添加到普通列表怎么设计?我用的是playLC.getPlayListMap().values().后面无法显示出来添加歌曲的方法,这是怎么回事?老师

正在回答 回答被采纳积分+1

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

2回答
好帮手慕珊 2018-03-09 16:37:08

http://img1.sycdn.imooc.com//climg/5aa247470001768c07550221.jpg

这里的break改成return,也就是一旦歌曲已经存在,就什么都不做,直接返回了。否则循环结束还是会这行musicList.add(song)

向主播放列表添加歌曲时,Song song = new Song();这条语句写到循环里,不然只有一个新的歌曲,调用set方法,都是对song做修改操作。


if(sid2.equals(playL.getMusicList())这个比较的语句,sid是字符串类型,而playL.getMusicList()得到的是歌曲的集合,所以要去循环遍历集合进行比较,或者直接调用通过id查询歌曲的方法进行比较。

建议下次再贴代码的时候,不要贴到回复里面,格式比较乱,不知道哪条语句注释掉了,贴到问答里。祝学习愉快!

好帮手慕珊 2018-03-09 11:46:57

建议PlayList中添加歌曲的方法不写这么复杂,只是判断一下集合musicList中是否存在该歌曲song,如果存在给出提示信息“歌曲已存在”,否则将歌曲添加到musicList。也就是说PlayList这个类中单纯的是对song进行增删改查,还不涉及到输入歌曲名等等这些业务逻辑。那么其他代码写在哪里呢,就写到测试类的case语句后面。

作业要求有一个主播放列表,它是所有播放列表的集合。当向普通播放列表添加歌曲时,先输入播放列表名称,如果播放列表不存在,则给出错误提示,如果播放列表存在,那么就向该播放类列表中添加歌曲。输入歌曲id后,要先去主播放列表查询该歌曲是否存在,如果存在则获取到Song的对象,直接添加。否则继续输入歌曲名和演唱者。

playLC.getPlayListMap().values(),values();方法取出的是多个播放列表的集合,还需要用增强型for循环把值取出来,然后再去调用PlayList中的方法。

祝学习愉快!

  • 提问者 拓扑95 #1
    老师,现在我已经改了PlayList类中添加歌曲的代码如下: public void addToPlayList(Song song){ for(int i=0;i<musicList.size();i++){ if(song.getId().equals(musicList.get(i).getId())){ System.out.println("播放列表已存在该歌曲id,请重新输入!"); break; } } musicList.add(song); } 在TestDemo类中,将歌曲添加到主播放列表的代码如下: case 1: Song song = new Song(); System.out.println("将歌曲添加到主播放列表"); System.out.println("请输入要添加的歌曲数量:"); int num = sc.nextInt(); for(int k1=0;k1<num;k1++){ System.out.println("请输入第"+(k1+1)+"首歌曲:"); System.out.println("请输入歌曲的id:"); String sid = sc.next(); song.setId(sid); System.out.println("请输入歌曲的名称:"); String sname = sc.next(); song.setName(sname); System.out.println("请输入演唱者:"); String ssinger = sc.next(); song.setSinger(ssinger); playL.addToPlayList(song); }
    2018-03-09 14:58:58
  • 提问者 拓扑95 #2
    在TestDemo类中,将歌曲添加到普通列表,其中普通列表的获取是这样的playLC.getPlayListMap().get(key),主播放列表是TestDemo类中的playL,但是在具体实现的时候,却无法取出playL对象中的歌曲,这是怎么回事?代码如下: case 2: System.out.println("将歌曲添加到普通播放列表"); System.out.println("请输入要添加的播放列表名称:"); Song song2 = new Song(); String mc = sc.next(); boolean flag = false; Set<String> set = playLC.getPlayListMap().keySet(); for(String key:set){ if(key.equals(mc)){ System.out.println("请输入要添加的歌曲数量:"); int num2 = sc.nextInt(); for(int k2=0;k2<num2;k2++){ System.out.println("请输入第"+(k2+1)+"首歌曲:"); System.out.println("请输入歌曲的id:"); String sid2 = sc.next(); for(int k3=0;k3<playL.getMusicList().size();k3++){ if(sid2.equals(playL.getMusicList()))//这里把输入的歌曲id和playL主播放列表中的歌曲id比较,但实际无法取得主播放列表内的歌曲??? } song2.setId(sid2); playLC.getPlayListMap().get(key).addToPlayList(song2); } flag = true; } } if(!flag){ System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!"); }
    2018-03-09 14:59:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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