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

来源:1-3 详细设计

qq_青鱼_1

2018-09-18 09:15:56

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

* @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回答

好帮手慕雪

2018-09-18

http://img.mukewang.com/climg/5ba0c83c0001b7ff07030444.jpg

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

0

好帮手慕雪

2018-09-18

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

0
hq_青鱼_1
h 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); } } } }
h018-09-18
共4条回复

0 学习 · 14452 问题

查看课程