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

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

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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