老师,帮忙看下我的导出文件代码哪里出问题了

老师,帮忙看下我的导出文件代码哪里出问题了

package com.imooc.player;


import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectOutputStream;

import java.util.Iterator;

import java.util.Scanner;


public class TestDemo {


// 对歌曲类Song进行测试的方法

public void testSong() {

Song song1 = new Song("s001", "两只老虎", "小太阳");

Song song2 = new Song("s002", "小燕子", "风车");

Song song3 = new Song("s003", "茉莉花", "彩虹");

Song song4 = new Song("s003", "茉莉花", "彩虹");

System.out.println(song1);

System.out.println(song4.equals(song3));

}


// 对PlayList类进行测试

public void testPlayList() {

// 定义几个Song类的对象,添加到播放列表中

Song song1 = new Song("s001", "两只老虎", "小太阳");

Song song2 = new Song("s002", "小燕子", "风车");

Song song3 = new Song("s003", "茉莉花", "彩虹");

// Song song4 = new Song("s003", "茉莉花", "彩虹");

// 创建一个PlayList类的对象

PlayList mainPlayList = new PlayList("主播放列表");

mainPlayList.addToPlayList(song1);

mainPlayList.addToPlayList(song2);

mainPlayList.addToPlayList(song3);

// mainPlayList.addToPlayList(song4);

// 显示播放列表的内容

mainPlayList.displayAllSong();

// 通过id查询歌曲信息

Song song = mainPlayList.searchSongById("s001");

if (song != null) {

System.out.println("根据id查询到的歌曲信息为");

System.out.println(song);

} else {

System.out.println("该歌曲不存在");

}

// 通过名称查询歌曲信息

mainPlayList.serachSongByName("两只老虎");

if (song != null) {

System.out.println("根据歌曲名称查询到的歌曲信息为");

System.out.println(song);

} else {

System.out.println("该歌曲不存在");

}

// 修改歌曲信息

Song songUpdate = new Song("s005", "蜗牛与黄鹂鸟", "小太阳");

mainPlayList.updateSong("s003", songUpdate);

mainPlayList.displayAllSong();

// 删除歌曲信息

mainPlayList.deleteSong("s005");

mainPlayList.displayAllSong();

}


// 测试播放列表集合类

public void testPlayListCollection() {

Song song1 = new Song("s001", "两只老虎", "小太阳");

Song song2 = new Song("s002", "小燕子", "风车");

Song song3 = new Song("s003", "茉莉花", "彩虹");

// 创建主播放列表

PlayList mainPlayList = new PlayList("主播放列表");

// 将歌曲添加到主播放列表中

mainPlayList.addToPlayList(song1);

mainPlayList.addToPlayList(song2);

mainPlayList.addToPlayList(song3);

// 定义一个新的播放列表,从主播放列表中添加歌曲进来

PlayList favouritePlayList = new PlayList("最喜欢的歌曲");

favouritePlayList.addToPlayList(mainPlayList.getMusicList().get(0));

favouritePlayList.addToPlayList(mainPlayList.getMusicList().get(1));

favouritePlayList.displayAllSong();

// 将两个播放列表添加到播放列表集合中

PlayListCollection plc = new PlayListCollection();

plc.addPlayList(mainPlayList);

plc.addPlayList(favouritePlayList);

plc.displayListName();

// 根据播放列表名字查询播放列表的信息,并显示所有歌曲

PlayList playList = plc.searchPlayListByName("最喜欢的歌曲");

playList.displayAllSong();

// 删除播放列表信息

System.out.println("删除前");

plc.displayListName();

plc.deletePlayList(favouritePlayList);

System.out.println("删除后");

plc.displayListName();

}


// 主菜单

public void mainMenu() {

System.out.println("*************************************");

System.out.println("              **主菜单**             ");

System.out.println("              1、播放列表管理                    ");

System.out.println("              2、播放器管理                      ");

System.out.println("              0、退出                                   ");

System.out.println("*************************************");

}


// 播放列表管理

public void playListMenu() {

System.out.println("*********************************************");

System.out.println("          **播放列表管理**              ");

System.out.println("      1、将歌曲添加到主播放列表                        ");

System.out.println("      2、将歌曲添加到普通播放列表                     ");

System.out.println("      3、通过歌曲id查询播放列表中的歌曲         ");

System.out.println("      4、通过歌曲名称查询播放列表中的歌曲      ");

System.out.println("      5、修改播放列表中的歌曲                             ");

System.out.println("      6、删除播放列表中的歌曲                             ");

System.out.println("      7、显示播放列表中的所有歌曲                     ");

System.out.println("      8、导出歌单                                                    ");

System.out.println("      9、返回上一级菜单                                         ");

System.out.println("*********************************************");


}


// 播放器菜单

public void playerMeny() {

System.out.println("*********************************************");

System.out.println("          **播放器管理**              ");

System.out.println("      1、向播放器添加播放列表                        ");

System.out.println("      2、从播放器删除播放列表                   ");

System.out.println("      3、通过名字查询播放列表信息         ");

System.out.println("      4、显示所有播放列表名称      ");

System.out.println("      9、返回上一级菜单                                         ");

System.out.println("*********************************************");

}


// 主流程

public void Test() {

TestDemo td = new TestDemo();

Scanner sc = new Scanner(System.in);

int input = 0, input1 = 0, input2 = 0;

// 创建一个播放器

PlayListCollection plc = new PlayListCollection();

// 创建一个主播放列表

PlayList mainPlayList = new PlayList("主播放列表");

// 将主播放列表添加到播放器

plc.addPlayList(mainPlayList);

PlayList favouriteList = null;


while (true) {

td.mainMenu();

System.out.println("请输入对应的数字进行操作:");

input = sc.nextInt();

if (input == 0) {

break;

}

switch (input) {

case 1:

// 播放列表管理

while (true) {

td.playListMenu();

System.out.println("请输入对应的数字对播放列表进行管理:");

input1 = sc.nextInt();

if (input1 == 9)

break;

switch (input1) {

case 1:

System.out.println("将歌曲添加到主播放列表:");

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

int count = sc.nextInt();

for (int i = 1; i <= count; i++) {

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

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

String strId = sc.next();

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

String strName = sc.next();

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

String strSinger = sc.next();

// 创建歌曲类的对象

Song song = new Song(strId, strName, strSinger);

mainPlayList.addToPlayList(song);

// mainPlayList.displayAllSong();

}

break;

case 2:

System.out.println("将歌曲添加到普通播放列表");

System.out.println("请输入要添加的播放列表的名称");

String sName = sc.next();

// 根据名称判断播放力标是否存在播放器中

favouriteList = plc.searchPlayListByName(sName);

if (favouriteList == null) {

System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!");

} else {

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

int count1 = sc.nextInt();

for (int i = 1; i <= count1; i++) {

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

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

String strId = sc.next();

// 首先判断该id的歌曲是否在主播放列表存在

Song song = mainPlayList.searchSongById(strId);

if (song == null) {

// 如果歌曲不存在,则创建新的添加,并且添加到主播放列表

System.out.println("该歌曲在主播放列表不存在,继续输入歌曲的其它信息!");

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

String strName = sc.next();

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

String strSinger = sc.next();

song = new Song(strId, strName, strSinger);

// 分别将歌曲添加到普通播放列表和主播放列表

favouriteList.addToPlayList(song);

mainPlayList.addToPlayList(song);

} else {

// 如果歌曲存在于主播放列表,则直接添加到现在的播放列表

favouriteList.addToPlayList(song);

}

}

// 显示播放列表的歌曲信息

System.out.println("主播放列表");

mainPlayList.displayAllSong();

System.out.println("普通播放列表");

favouriteList.displayAllSong();

}

break;

case 3:

System.out.println("通过歌曲id查询播放列表中的歌曲");

System.out.println("请输入要查询的播放列表名称:");

String strPlayerList = sc.next();

PlayList pl = plc.searchPlayListByName(strPlayerList);

if (pl == null) {

System.out.println("您要查询的播放列表不存在!");

break;

} else {

System.out.println("请输入要查询的歌曲的id");

String strId = sc.next();

Song song = pl.searchSongById(strId);

if (song == null) {

System.out.println("您要查询的歌曲不存在!");

break;

} else {

System.out.println("您要查询的歌曲信息为:");

System.out.println(song);

}

}

break;

case 4:

System.out.println("通过歌曲名称查询播放列表中的歌曲");

System.out.println("请输入要查询的播放列表名称:");

String strName = sc.next();

PlayList playList = plc.searchPlayListByName(strName);

if (playList == null) {

System.out.println("您输入的播放列表不存在");

break;

} else {

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

String strName1 = sc.next();

Song song = playList.serachSongByName(strName1);

if (song == null) {

System.out.println("您要查询的歌曲不存在!");

break;

} else {

System.out.println("您要查询的歌曲信息为:");

System.out.println(song);

}

}

break;

case 5:

System.out.println("修改播放列表中的歌曲");

System.out.println("请输入要修改的播放列表:");

String strList = sc.next();

PlayList pl5 = plc.searchPlayListByName(strList);

if (pl5 == null) {

System.out.println("您输入的列表信息不存在");

break;

} else {

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

String strId = sc.next();

Song song = pl5.searchSongById(strId);

if (song == null) {

System.out.println("您要修改的歌曲id不存在");

break;

} else {

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

String strName5 = sc.next();

System.out.println("请输入要修改的歌曲演唱者:");

String strSinger5 = sc.next();

song = new Song(strId, strName5, strSinger5);

pl5.updateSong(strId, song);

pl5.displayAllSong();

}

}

break;

case 6:

System.out.println("删除播放列表中的歌曲");

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

String strId6 = sc.next();

mainPlayList.deleteSong(strId6);

favouriteList.deleteSong(strId6);

break;

case 7:

System.out.println("显示播放列表中的所有歌曲");

System.out.println("主播放列表中的歌曲:");

mainPlayList.displayAllSong();

System.out.println("普通列表中的歌曲:");

favouriteList.displayAllSong();

break;

case 8:

System.out.println("导出歌单");

System.out.println("请输入要导出的播放列表:");

String strPlayList = sc.next();

if(strPlayList == null) {

System.out.println("您输入的播放列表不存在!");

}else if(strPlayList.equals("主播放列表")) {

try {

FileOutputStream fos = new FileOutputStream(strPlayList + ".txt");

ObjectOutputStream oos = new ObjectOutputStream(fos);

Iterator<Song> it = mainPlayList.getMusicList().iterator();

oos.flush();

while(it.hasNext()) {

oos.writeObject(it.next());

}

oos.close();

oos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}catch (IOException e) {

e.printStackTrace();

}

}

default:

System.out.println("该歌曲没有对应的操作");

break;

}

}


break;

case 2:

// 播放器管理

while (true) {

td.playerMeny();

System.out.println("请输入对应的数字对播放器进行管理:");

input2 = sc.nextInt();

if (input2 == 9)

break;

switch (input2) {

case 1:

System.out.println("向播放器添加播放列表");

System.out.println("输入要添加的播放列表的名称:");

String playerName = sc.next();

// 创建一个新的播放列表对象

favouriteList = new PlayList(playerName);

// 将播放列表添加到播放器Map

plc.addPlayList(favouriteList);

break;

case 2:

System.out.println("从播放器删除播放列表");

System.out.println("请输入要删除的播放列表名称:");

String strPlayListName = sc.next();

if (strPlayListName.equals("主播放列表")) {

System.out.println("主播放列表不能删除");

break;

}

// 查询播放列表是否存在

PlayList playList1 = plc.searchPlayListByName(strPlayListName);

if (playList1 == null) {

System.out.println("该播放列表不存在!");

} else {

// 存在就删除

plc.deletePlayList(playList1);

}

break;

case 3:

System.out.println("通过名字查询播放列表");

System.out.println("请输入要查询的列表名称");

String strPlayList1 = sc.next();

PlayList playList2 = plc.searchPlayListByName(strPlayList1);

if (playList2 == null) {

System.out.println("该播放列表不存在");

} else {

// 显示该播放列表名称以及其中的所有歌曲

System.out.println("该播放列表存在");

System.out.println("该播放列表的名称为:" + strPlayList1);

playList2.displayAllSong();

}

break;

case 4:

System.out.println("显示所有播放列表名称");

System.out.println("所有播放列表的名称为:");


plc.displayListName();

break;

default:

System.out.println("该歌曲没有对应的操作");

break;

}

}

break;

default:

System.out.println("该数字没有对应的操作!");

break;

}

}


}


public static void main(String[] args) {

TestDemo td = new TestDemo();

// td.testSong();

// td.testPlayList();

// td.testPlayListCollection();

td.Test();


}


}



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

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

2回答
wufeng321 2020-07-24 17:29:28

是不是歌曲类Song没有实现Serializable接口啊?

  • 提问者 掉头发的小刘 #1
    实现了,目前还是不知道啥情况
    2020-07-24 18:00:31
  • 同学你好,同学参考好帮手慕阿园的回答尝试调试一下,如果还是有问题,同学可以尝试将自己其他代码贴出到代码区。 继续加油 祝:学习愉快~
    2020-07-24 19:12:49
好帮手慕阿园 2020-07-23 09:59:26

同学你好,同学的代码是从教辅区导出的吗,老师测试课程中的源码没有问题

同学只给了测试类,根据源码测试,同学的代码中通过名称查询歌曲信息的方法名没有找到,同学检查下是否跟PlayList类中的方法名一致,源码中的方法名是searchSongByName();

如下

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

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

如果还有问题,建议同学将其他类的代码也赋值粘贴到问答区,方便老师测试代码

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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