向普通播放列表中添加歌曲

向普通播放列表中添加歌曲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
package com.imooc.music;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
 
 
//播放列表类
public class PlayList {
 
    // 成员属性:播放列表名称,播放列表中的歌曲集合;
    private String playListName;//即为:播放列表的名称
    private List <Song>musiclist=new ArrayList<Song>(); //即为:播放列表的歌曲集合
    Scanner sc=new Scanner(System.in);
     
    // 创建无参构造
    public PlayList() {
 
    }
 
    // 创建带参构造对成员属性进行赋值操作
    public PlayList(String playListName ) {
        this.setPlayListName(playListName);
         
    }
    public PlayList(String playListName, List<Song> musiclist) {
        this.setPlayListName(playListName);
        this.setMusiclist(musiclist);
    }
 
    // 相应的getter和setter方法
    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 addToPlayList(Song song) {
         
         Iterator<Song> it=this.getMusiclist().listIterator();
                    boolean flag=false;
                while(it.hasNext())
                {
                    if(it.next().getId().equals(song.getId()))
                    {
                         
                         
                        flag=true;
                       continue;
                    }
                }
                 
                if(flag)
                {
                     System.out.println("不能添加相同id的歌曲!");
                     System.out.println("该歌曲未能加入播放列表中!");
                }
            
                else
                {
                     this.getMusiclist().add(song);
                }
    }
 
 
    // 创建方法:显示播放列表中的所有歌曲;
         
    public void displayAllSong() {
         Iterator<Song> it=this.getMusiclist().listIterator();
         
        while(it.hasNext())
        {
            System.out.println(it.next());
             
             
        }
         
    }
 
    // 创建方法:通过id查询歌曲:
    public Song searchSongById(String id) {
        boolean flag=false;
        Song song=null;
        Iterator<Song> it=this.getMusiclist().listIterator();
        while(it.hasNext())
        {
            song=(Song)it.next();
         if(song.getId().equals(id))
         {
             flag=true;
             break;
         }
     
        }
 
        if(flag)
        {
            System.out.println(song);
        }
        else
        {
          song=null;
         System.out.println("该歌曲未找到");
         
        }
        return song;
         
    }
 
    // 创建方法:通过名称查询歌曲
    public Song searchSongByName(String n) {
         
        boolean flag=false;
        Song song=null;
         Iterator<Song> it=this.getMusiclist().listIterator();
        while(it.hasNext())
        {
            song=(Song)it.next();
         if(song.getName().equals(n))
         {
             flag=true;
             break;
         }
     
        }
 
        if(flag)
        {
            System.out.println(song);
        }
        else
        {
          song=null;
         System.out.println("该歌曲未找到");
         
        }
        return song;
         
    }
 
    // 创建方法:修改歌曲
    public void updateSong(Song song) {
 
          
        System.out.println("请输入要修改歌曲的id:");
        String n=sc.next();
         Iterator<Song> it=this.getMusiclist().listIterator();
        while(it.hasNext())
        {
            song=(Song)it.next();
         if(song.getId().equals(n))
         {
             System.out.println("请输入修改后的歌曲名称:");
            String m=sc.next();
             System.out.println("请输入修改后的歌曲演唱者:");
             String s=sc.next();
            song.setName(m);
            song.setSinger(s);
            System.out.println("修改成功!");
             break;
         }
         
         
        }
         
    }
 
    // 创建方法:从播放列表删除歌曲
    public void deleteSong(String id)
 
    {  
         Iterator<Song> it=this.getMusiclist().listIterator();
         
        while(it.hasNext())
        {
             
             
             if(it.next().getId().equals(id))
             {
                  
                 it.remove();
                  
                 break;
             }
             
        }
         
    }
 
    // 创建方法:显示播放列表中的所有歌曲
    public void displayAllsong() {
 
         Iterator<Song> it=this.getMusiclist().listIterator();
            while(it.hasNext())
            {
                System.out.println(it.next());
             }
    }
 
    // 创建方法:导出歌单
    public void exportPlayList() {
 
    }
 
    @Override
    public String toString() {
        return "  musiclist + ";
    }
 
}
 
 
package com.imooc.music;
 
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
 
public class TestDemo {
        
    public static void main(String[] args) {
     
     
         
        PlayList playlist=new PlayList("主播放列表");//创建主播放列表
        PlayListCollection playmusic=new PlayListCollection();
        playmusic.getPlayListMap().put("主播放列表", playlist);//将主播放列表加入到播放器中;
        PlayList playlist1=null;//创建普通播放列表
       Menu menu=new Menu();
       Song song=null;
        Scanner sc=new Scanner(System.in);
       boolean flag=false;
       menu.mainMenu();
        while(!flag) {
         
             boolean flag1=false;
             boolean flag2=false;
            System.out.println("请输入对应数字进行操作:");
            int x=sc.nextInt();   
           
              switch(x)
              {
              case 1:menu.playListMenu();break;
              case 2:menu.playMenu();break;
              case 0: System.out.println("欢迎下次光临!");System.exit(0);
 
              }
               
             if(x==1) {
                 while(!flag1) {
              System.out.println("请输入对应数字进行操作:");
              int y=sc.nextInt();  
               
               switch(y)
             {
             case 1:System.out.println("将歌曲添加到主播放列表");
                     System.out.println("请输入要添加歌曲的数量:");
                    int m=sc.nextInt();
                    for(int i=0;i<m;i++)
                    {song=new Song();
                    System.out.println("请输入第"+(i+1)+"歌曲:");
                    System.out.println("请输入歌曲的id:");
                    String id=sc.next();   
                    System.out.println("请输入歌曲的名称:");
                    String name=sc.next();
                    System.out.println("请输入演唱者:");
                    String singername=sc.next();  
                    song.setId(id);
                    song.setName(name);
                    song.setSinger(singername);
                    playlist.addToPlayList(song);}
                    menu.playListMenu();break;
                     
                     
             case 2:System.out.println("将歌曲添加到普通的播放列表");
                    System.out.println("请输入要添加的播放列表名称:"); 
                    String listname=sc.next();
                 if( playmusic.getPlayListMap().containsKey(listname))
                 {
                    System.out.println("请输入要添加歌曲的数量:");
                    int k=sc.nextInt();
                    for(int i=0;i<k;i++)
                    {
                    song=new Song();
                    System.out.println("请输入第"+(i+1)+"歌曲:");
                    System.out.println("请输入歌曲的id:");
                   String id=sc.next();  
                   Iterator<Song> it=playlist.getMusiclist().iterator();
                   while(it.hasNext())
                   {
                      if(it.next().getId().equals(id)){
                           
                               song=it.next();
                               playlist1.addToPlayList(song);
                               break;
                            }
                            
                      else {
                               System.out.println("该歌曲在主播放列表不存在,请继续输入歌曲的其他信息");
                              System.out.println("请输入歌曲的名称:");
                              String name=sc.next();
                              System.out.println("请输入演唱者:");             
                              String singername=sc.next();  
                              song.setId(id);
                              song.setName(name);
                              song.setSinger(singername);
                              playlist1.addToPlayList(song);   
                              playlist.addToPlayList(song);
                            }
                       
                   }
             
                    }
                     
                    //输出该播放器和主播放器中的歌曲
                    Set<String>keySet=playmusic.getPlayListMap().keySet();
                    for(String key:keySet)
                    {
                        System.out.println(playmusic.getPlayListMap().get(key));
                         
                    }
                     
                     
                     
                     
                 }
                    
                   else {System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!");}
                
                         menu.playListMenu();
                         break;


正在回答

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

3回答

第一次肯定是不存在的。 if( playmusic.getPlayListMap().containsKey(listname))表示存在,所以你的else{人为的添加上这个列表。自己new一个List,把歌曲添加到这个list以后,再把它放在 playmusic.getPlayListMap()中}祝:学习愉快

  • 猪哥哥呀 提问者 #1
    可以在输入s001之后 调用 查询歌曲的功能 返回值刚好是song 将返回值添加到新建立的播放列表 就不出错了(这点没想到,写了无数次添加循环都要出错); if(playlist.searchSongById(id)!=null) { song=playlist.searchSongById(id); playlist1.addToPlayList(song); } else { System.out.println("该歌曲在主播放列表不存在,请继续输入歌曲的其他信息"); 这个问题一解决,其他的都写出来了;我现在已经马上写完了,好开心啊,写了3天了!
    2017-10-25 17:28:02
  • 好帮手慕雪 回复 提问者 猪哥哥呀 #2
    嗯,加油。
    2017-10-25 17:58:06
飞一样的感觉 2018-05-01 15:06:14

 song=(Song)it.next();   这个Song 不需要的  你上面不是已经把迭代器的对象定义成Song的类型了,下面不需要强转了吧

提问者 猪哥哥呀 2017-10-25 11:53:07
1
<br>

老师你看看我的 case 2:   到底怎么写啊,想不出来了      无论怎么改 都会出现添加出错

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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