添加歌曲到第三个时出问题了

添加歌曲到第三个时出问题了

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

* @param song

*/

public void addToPlayList(Song song) {

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

int n=sc.nextInt();

for(int i=0;i<n;i++) {

boolean flag=true;

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

while(flag) {

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

String str=sc.next();

if(musicList.size()==0) {

song.setId(str);

flag=false;

}else {

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

flag=true;

if(str.equals(musicList.get(j).getId())) {

System.out.println("该歌曲编号已存在,请重新输入!");

break;

}else {

song.setId(str);

flag=false;

}

}

}

}

while(!flag) {

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

String str1=sc.next();

if(musicList.size()==0) {

song.setName(str1);

flag=true;

}else {

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

flag=false;

if(str1.equals(musicList.get(j).getName())) {

System.out.println("该歌曲名称已存在,请重新输入!");

break;

}else {

song.setName(str1);

flag=true;

}

}

}

}

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

song.setSinger(sc.next());

musicList.add(song);

}

}


正在回答

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

2回答

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

你得遍历完歌曲才能知道是不是存在吧,所以你这里的else内的代码,应该放在for的外面。如果存在的话直接退出方法了,只有不存在才会走到for的外层。

好帮手慕雪 2018-09-18 09:41:59

不需要判断歌曲的名称,只要判断id就可以了,实现也是这样子的,同一首歌,可能有不同的演唱者。另:你说的出问题,出什么问题了,没明白。

  • 提问者 qq_青鱼_1 #1
    我选择添加三首歌,添加到第三首的时候提示该歌曲编号已存在
    2018-09-18 10:06:59
  • 好帮手慕雪 回复 提问者 qq_青鱼_1 #2
    那你看输出一下它内部的所有歌曲,看是否已经存在此编号了呢。或者在if(str.equals(musicList.get(j).getId())) 之前输出一个str,再输出一下musicList.get(j).getId()看是否真的一致,就知道是哪里出问题了
    2018-09-18 11:35:24
  • 提问者 qq_青鱼_1 #3
    重新简化了下代码,还是有那个问题,添加4首歌曲,前三首能顺利添加,最后一首提示歌曲id存在,然后直接结束添加方法返回到主方法里 public void addToPlayList(Song song) { System.out.println("请输入要添加的歌曲的数量:"); int n=sc.nextInt(); for(int i=0;i<n;i++) { boolean flag=true; System.out.println("请输入第"+(i+1)+"首歌曲:"); while(flag) { System.out.println("请输入歌曲的id:"); String str=sc.next(); if(musicList.size()==0) { song.setId(str); System.out.println("请输入歌曲的名称:"); song.setName(sc.next()); System.out.println("请输入演唱者:"); song.setSinger(sc.next()); musicList.add(song); flag=false; }else { for(Song s:musicList) { if(s.getId().equals(str)) { System.out.println("该歌曲id已存在,请重新输入:"); return; }else { song.setId(str); System.out.println("请输入歌曲的名称:"); song.setName(sc.next()); System.out.println("请输入演唱者:"); song.setSinger(sc.next()); flag=false; } } musicList.add(song); } } } }
    2018-09-18 16:40:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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