播放列表中四首歌曲都能显示出来,可是为什么根据id和name只能查询第一个歌曲?

播放列表中四首歌曲都能显示出来,可是为什么根据id和name只能查询第一个歌曲?

老师,代码和视频中演示的一样,为什么结果出问题?

console显示结果:

播放列表中的歌曲为

歌曲信息 :id为:S001 歌曲名称为:小燕子 演唱者为:小太阳合唱团

歌曲信息 :id为:S002 歌曲名称为:小燕 演唱者为:太阳合唱团

歌曲信息 :id为:S003 歌曲名称为:小鼹鼠 演唱者为:大风车合唱团

歌曲信息 :id为:S004 歌曲名称为:小燕子 演唱者为:大风车合唱团

该歌曲不存在!

根据name查到的歌曲为:

歌曲信息 :id为:S001 歌曲名称为:小燕子 演唱者为:小太阳合唱团


正在回答

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

1回答

同学你好,当集合中歌名与接收的歌名是一样的就会赋值,并退出循环。如下图所示,所以只查询到第一首歌

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

如果同学想要查询重复歌名的歌曲,则同学可尝试使用集合,将查询到的数据添加到新集合中,然后将所有数据从集合中取出来。代码如下: 

	public void searchSongByNames(String name) {
	    List<Song> list = new ArrayList<Song>();
	    for (Song song : musicList) {
	       if (song.getName().equals(name)) {
	           list.add(song);
	       }
	    } 
	    if (list.size() != 0) {
		    int num = 1;
		    for (Song s : list) {
		       System.out.println("第" + num + "首" + "歌名为:" + s.getName());
		       num++;
		    }
	    } else {
	       System.out.println("该格式的歌曲不存在!");
	    }
	 }

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • cj啦啦啦啦 提问者 #1
    老师,我第一次用编号S002,S003,S004或者通过编号所对应的名字查询时候,都显示歌曲不存在。而且已经将这三首歌曲信息通过musicPlayList.add(song2)方法添加到列表里了,显示出来了。还是没明白为什么查询不出来,查询方法里不是已经吧song这个变量赋值为null了吗,应该可以比较传入的名字或者编号和musicPlayList里的歌曲比较了啊。
    2019-11-27 16:01:16
  • cj啦啦啦啦 提问者 #2
    而且我也使用Song s接收查询结果了,并打印输出System.out.println(s);。感觉编码上没啥问题啊。
    2019-11-27 16:03:53
  • 好帮手慕小尤 回复 提问者 cj啦啦啦啦 #3
    同学你好,关于代码问题,请同学将代码贴上来,便于寻找问题。祝学习愉快!
    2019-11-27 16:17:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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