老师,请帮我看看是什么问题,谢谢

老师,请帮我看看是什么问题,谢谢

    老师,帮我看看为什么添加歌曲到普通列表中时,也自动添加到了主播放列表中,删除也是一样的情况,还有导出文件的时候报错,请问是什么原因

// 将歌曲添加到播放列表
    Scanner sc = new Scanner(System.in);

    public void addToPlayList(Song song) {
        Song song1=new Song();
        boolean flag=false;
        for (int i = 0; i < musicList.size(); i++) {
            if (musicList.get(i).getId().equals(song1.getId())) {
                System.out.println("该歌曲已经存在,请不要重复添加");
                flag=true;
                break;
            }
        }
        if(flag==false) {
            musicList.add(song);
            System.out.println("添加成功!");
                
                }
        }
   
********************************************************************************************

//修改歌曲信息
    public void updateSong() {
        System.out.println("请输入要修改的歌曲id:");
        String id=sc.next();
        boolean flag=false;
        for (int i = 0; i < musicList.size(); i++) {
            if (musicList.get(i).getId().equals(id)) {
                System.out.println("请输入要修改的歌曲名");
                String name = sc.next();
                musicList.get(i).setName(name);
                System.out.println("请输入要修改的演唱者");
                String singer = sc.next();
                musicList.get(i).setSinger(singer);
                System.out.println("修改成功!");
                flag = true;
                break;
            }
        }
        if (!flag) {
            System.out.println("12该歌曲不存在,请重新输入!");
        }
    }
    //从播放列表中删除歌曲
    public void deleteSong() {
        PlayListCollection plc=new PlayListCollection();
        System.out.println("请输入要删除的歌曲id:");
        String id=sc.next();
        boolean flag=false;
        for(int i=0;i<musicList.size();i++) {
            if(musicList.get(i).getId().equals(id)) {
                musicList.remove(i);
                System.out.println("删除成功!");
                flag=true;
                break;
            }
        }
        if(!flag) {
            System.out.println("没有该歌曲,请重新输入");
        }
    }

***********************************************************************

    case 1:
                        System.out.println("将歌曲添加到主播放列表:");
                        System.out.println("请输入要添加的歌曲数量!");
                        int num = sc.nextInt();
                        for (int i = 0; i < num; i++) {
                            System.out.println("请添加第" + (i + 1) + "首歌曲:");
                            System.out.println("请输入歌曲的id:");
                            String musicid = sc.next();
                            System.out.println("请输入歌曲的名称:");
                            String name = sc.next();
                            System.out.println("请输入歌曲的演唱者:");
                            String singer = sc.next();
                            Song song=new Song(musicid,name,singer);
                            pl.addToPlayList(song);
                            plc.getPlayListMap().put("主播放列表", pl);
                        }
                        break;
                    case 2:
                        System.out.println("将歌曲添加到普通播放列表:");
                        System.out.println("请输入普通播放列表的名称:");
                        boolean hhh = false;
                        String playListName = sc.next();
                        Set<String> keySet = plc.getPlayListMap().keySet();
                        for (String key : keySet) {
                            if (playListName.equals(key)) {
                                System.out.println("请输入要添加的歌曲数量!");
                                int num1 = sc.nextInt();
                                for (int i = 0; i < num1; i++) {
                                    System.out.println("请添加第" + (i + 1) + "首歌曲:");
                                    System.out.println("请输入歌曲的id:");
                                    String musicid = sc.next();
                                    System.out.println("请输入歌曲的名称:");
                                    String name = sc.next();
                                    System.out.println("请输入歌曲的演唱者:");
                                    String singer = sc.next();
                                    Song song=new Song(musicid,name,singer);
                                    pl.addToPlayList(song);
                                }
                                hhh = true;
                            }
                        }
                        if (hhh == false) {
                            System.out.println("3该播放列表不存在,请先将播放列表到播放器中!");
                        }
                        break;

******************************************************************************************

    case 5:
                        System.out.println("修改播放列表中的歌曲;");
                        System.out.println("请输入播放列表的名称:");
                        String name7 = sc.next();
                        Set<String> keySet3 = plc.getPlayListMap().keySet();
                        for (String key3 : keySet3) {
                            if (name7.equals(key3)) {
                                pl.updateSong();
                                hhh = true;
                            }
                        }
                        if (hhh = false) {
                            System.out.println("3该播放列表不存在,请先将播放列表到播放器中!");

                        }
                        break;
                    case 6:
                        System.out.println("删除播放列表中的歌曲");
                        pl.deleteSong();
                        break;
                    case 7:
                        System.out.println("显示播放列表中的所有歌曲");
                        System.out.println("请输入播放列表的名称:");
                        Set<String> keySet4 = plc.getPlayListMap().keySet();
                        String name1 = sc.next();
                        for (String key4 : keySet4) {
                            if (name1.equals(key4)) {
                                pl.displayAllSong();
                                hhh = true;
                            }
                        }
                        if (hhh = false) {
                            System.out.println("3该播放列表不存在,请先将播放列表到播放器中!");

                        }
                        break;
                    case 8:
                        System.out.println("导出歌曲");
                        plc.outPut();
                        break;

**********************************************************************

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

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

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


正在回答 回答被采纳积分+1

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

2回答
提问者 雨夜落寞 2018-09-30 11:59:19

    public void outPut() {
        System.out.println("请输入要导出的播放列表名称:");
        String listName = sc.next();
        Set<String> keySet = playListMap.keySet();
        for (String key : keySet) {
            if (listName.equals(key)) {
                File file = new File(listName + ".txt");
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                try {
                    FileOutputStream fos = new FileOutputStream(listName + ".txt");
                    ObjectOutputStream oos = new ObjectOutputStream(fos);
                    oos.writeObject(playListMap.get(listName));
                    System.out.println("歌单导出成功!");
                    oos.flush();
                    fos.close();
                    oos.close();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }http://img1.sycdn.imooc.com//climg/5bb04a110001e2dd07240531.jpg

  • 报错的信息说:PlayList没有序列化。在这个作业中,只有Song类需要序列化,同学再去检查一下其他类有没有实现序列化。同学有问题再提问,请将所有的代码都贴出来。方便我们帮你调试。
    2018-09-30 14:17:53
好帮手慕阿满 2018-09-30 11:38:48

根据作业的演示效果,添加歌曲到普通播放列表中,会将歌曲自动添加到主播放列表,删除歌曲时,会将所有播放列表中的该歌曲删除,这样是正确的。因为同学贴出来的代码只是部分,具体是怎样实现的,没法判断。

导出歌单报错,最可能的原因是你的Song类没有实现序列化,将Song类implements Serializable试试。如果同学还有问题,可以继续提问,提问时将所有代码都贴出来,方便我们帮你调试。

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

  • 提问者 雨夜落寞 #1
    song类序列化后还是不能导出是为什么
    2018-09-30 11:57:16
  • 提问者 雨夜落寞 #2
    老师你看一下我导出歌单的错误原因是什么,我已经将song类序列化了
    2018-09-30 12:00:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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