4-7作业问题
public void test() throws InputMismatchException {
TestDemo td = new TestDemo();
Scanner sc = new Scanner(System.in);
// 需要3个变量接收数据
int input = 0, input1 = 0, input2 = 0;
//创建播放列表容器(也就是播放器)
PlayListCollection plc=new PlayListCollection();
//创建主播放列表
PlayList mainPlayList=new PlayList("主播放列表");
//将播放列表添加到播放器中,之后在case语句中再把歌曲添加到播放列表中
plc.addPlayList(mainPlayList);
//定义其他播放列表存储歌曲
PlayList favouritePlayList=null;
while (true) {
td.mainMenu();
System.out.println("请输入对应的数字:");
// try {
input = sc.nextInt();
if (input == 0) {
break;
}
// }catch (InputMismatchException e) {
// System.out.println("输入信息有误,只可输入整数,请重新输入!");
// sc.next();
// }
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();
//根据名称判断播放列表是否在播放器中存在
favouritePlayList=plc.searchPlayListByName(sName);
if(favouritePlayList==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类的对象
song=new Song(strId,strName,strSinger);
//把Song类的对象添加到普通播放列表,和主播放列表中
mainPlayList.addToPlayList(song);
favouritePlayList.addToPlayList(song);
}else {
//如果歌曲存在于主播放列表,则直接添加到现在的播放列表中
System.out.println("歌曲信息已存在,无需再次添加!");
favouritePlayList.addToPlayList(song);
}
} //显示播放列表中的歌曲信息
System.out.println("主播放列表: ");
mainPlayList.displayAllSong();
System.out.println("普通播放列表:");
favouritePlayList.displayAllSong();
}
break;
case 3:
System.out.println("通过歌曲id查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
String strPlayListName1=sc.next();
//查询播放列表是否存在
PlayList pl=plc.searchPlayListByName(strPlayListName1);
if(pl==null) {
System.out.println("该播放列表不存在!");break;
}else {
System.out.println("请输入要查询的歌曲id:");
String strId1=sc.next();
Song s=pl.searchSongById(strId1);
if(s==null) {
System.out.println("该歌曲在播放列表"+strPlayListName1+"中不存在");
}else {
System.out.println("该歌曲的信息为:");
System.out.println(s);
}
}
break;
case 4:
System.out.println("通过歌曲名称查询播放列表中的歌曲");
System.out.println("请输入需要查询的播放器名称:");
String strPlayListName=sc.next();
//判断播放器列表是否存在
pl=plc.searchPlayListByName(strPlayListName);
if(pl==null) {
System.out.println("该播放列表不存在!");break;
}else {
System.out.println("请输入要查询的歌曲的名称:");
String strName=sc.next();
Song s=pl.searchSongByName(strName);
if(s==null) {
System.out.println("该歌曲在播放列表"+strPlayListName+"中不存在");
}else {
System.out.println("该歌曲的信息为:");
System.out.println(s);
}
}
break;
case 5:
System.out.println("修改播放列表中的歌曲");
System.out.println("请输入播放列表名称:");
String strPlayListName2=sc.next();
//首先查询播放列表名称
pl=plc.searchPlayListByName(strPlayListName2);
//进行判断,如果为空,则无此播放列表,无法删除
if(pl==null) {
System.out.println("该播放列表不存在,无法修改"+strPlayListName2+"列表中的歌曲!");
}else {
System.out.println("请输入需要修改歌曲的id:");
String strId=sc.next();
Song s=pl.searchSongById(strId);
if(s==null) {
System.out.println(strPlayListName2+"列表中无此id的歌曲,无法修改!");
}else {
System.out.println("请输入修改歌曲的名称:");
String strName=sc.next();
System.out.println("请输入修改歌曲的演唱者:");
String strSinger1=sc.next();
Song s1=new Song(strId,strName,strSinger1);
pl.updateSong(strId, s1);
}
}System.out.println("修改后:");
pl.displayAllSong();
break;
case 6:
System.out.println("删除播放列表中的歌曲");
System.out.println("请输入播放列表名称:");
String strPlayListName3=sc.next();
//查询要删除的播放列表是否存在
pl=plc.searchPlayListByName(strPlayListName3);
if(pl==null) {
System.out.println("该播放列表不存在,无法删除"+strPlayListName3+"列表中的歌曲!");
}else {
//通过歌曲ID删除此播放列表中的歌曲
System.out.println("请输入需要删除歌曲的id:");
String strId=sc.next();
Song s=pl.searchSongById(strId);
if(s==null) {
System.out.println("此播放列表中无"+strId+"的歌曲信息");
}else {
pl.deleteSong(strId);
}
}System.out.println("删除后:");
pl.displayAllSong();
break;
case 7:
System.out.println("显示播放列表中的歌曲");
System.out.println("请输入播放列表名称:");
String strPlayListName4=sc.next();
pl=plc.searchPlayListByName(strPlayListName4);
if(pl==null) {
System.out.println("无"+strPlayListName4+"列表的信息!");
}else {
pl.displayAllSong();
}
break;
case 8:
//根据歌单名称将歌单信息导出为“名称.txt"文件到项目的根目录下
System.out.println("请输入需要导出的歌单名称:");
String strPlayListName5=sc.next();
pl=plc.searchPlayListByName(strPlayListName5);
if(pl==null) {
System.out.println("没有此"+strPlayListName5+"列表的信息!");
}else {
try {
//创建文件输出流,并通过对象输出流传入;
FileOutputStream fos=new FileOutputStream(strPlayListName5+".txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
//创建文件输入流,并通过对象输入流读取信息
FileInputStream fis=new FileInputStream(strPlayListName5+".txt");
ObjectInputStream ois=new ObjectInputStream(fis);
//将信息写入文件中
for(Song s:pl.getMusicList()) {
oos.writeObject(s);
}
oos.writeObject(null);
oos.flush();
//将信息读取出来
Song s=null;
try {
while((s=(Song) ois.readObject())!=null) {
System.out.println(s);
}
fos.close();
oos.close();
fis.close();
ois.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
}
}
break;
default:
System.out.println("该歌曲没有对应的操作");
break;
}
}
break;
老师为什么最后,我在控制台读取不到信息啊? 最后的case8 ,读取不出来信息,结果如下:
*******************************
**主菜单**
1--播放列表管理
2--播放器管理
0--退出
*******************************
请输入对应的数字:
1
***************************************
**播放列表管理**
1--将歌曲添加到主播放列表
2--将歌曲添加到普通播放列表
3--通过歌曲id查询播放列表中的歌曲
4--通过歌曲名称查询播放列表中的歌曲
5--修改播放列表中的歌曲
6--删除播放列表中的歌曲
7--显示播放列表中的歌曲
8--导出歌单
9--返回上一级菜单
***************************************
请输入对应的数字:
1
将歌曲添加到主播放列表
请输入要添加歌曲的数量:
2
请输入第1首歌曲:
请输入歌曲的id:
01
请输入歌曲的名称:
d
请输入演唱者:
d
请输入第2首歌曲:
请输入歌曲的id:
02
请输入歌曲的名称:
d
请输入演唱者:
f
***************************************
**播放列表管理**
1--将歌曲添加到主播放列表
2--将歌曲添加到普通播放列表
3--通过歌曲id查询播放列表中的歌曲
4--通过歌曲名称查询播放列表中的歌曲
5--修改播放列表中的歌曲
6--删除播放列表中的歌曲
7--显示播放列表中的歌曲
8--导出歌单
9--返回上一级菜单
***************************************
请输入对应的数字:
8
请输入需要导出的歌单名称:
主播放器列表
没有此主播放器列表列表的信息!
***************************************
**播放列表管理**
1--将歌曲添加到主播放列表
2--将歌曲添加到普通播放列表
3--通过歌曲id查询播放列表中的歌曲
4--通过歌曲名称查询播放列表中的歌曲
5--修改播放列表中的歌曲
6--删除播放列表中的歌曲
7--显示播放列表中的歌曲
8--导出歌单
9--返回上一级菜单
***************************************
请输入对应的数字:
8
请输入需要导出的歌单名称:
主播房列表
没有此主播房列表列表的信息!
***************************************
**播放列表管理**
1--将歌曲添加到主播放列表
2--将歌曲添加到普通播放列表
3--通过歌曲id查询播放列表中的歌曲
4--通过歌曲名称查询播放列表中的歌曲
5--修改播放列表中的歌曲
6--删除播放列表中的歌曲
7--显示播放列表中的歌曲
8--导出歌单
9--返回上一级菜单
***************************************
请输入对应的数字:
8
请输入需要导出的歌单名称:
主播放列表
***************************************
**播放列表管理**
1--将歌曲添加到主播放列表
2--将歌曲添加到普通播放列表
3--通过歌曲id查询播放列表中的歌曲
4--通过歌曲名称查询播放列表中的歌曲
5--修改播放列表中的歌曲
6--删除播放列表中的歌曲
7--显示播放列表中的歌曲
8--导出歌单
9--返回上一级菜单
***************************************
请输入对应的数字:
正在回答 回答被采纳积分+1
同学你好,
1、老师这边运行没有问题,可以从输入流中读取不出来信息 。运行效果 如下:
建议同学使用如下代码,运行试试:
public void test() throws InputMismatchException { TestDemo td = new TestDemo(); Scanner sc = new Scanner(System.in); PlayList pl = null; int input = 0, input1 = 0, input2 = 0; PlayListCollection plc = new PlayListCollection(); PlayList mainPlayList = new PlayList("主播放列表"); plc.addPlayList(mainPlayList); PlayList favouritePlayList = 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); } System.out.println("将歌曲添加到主播放列表add over mainPlayList:"+mainPlayList.getPlayListName()+" "+mainPlayList.getMusicList()); break; case 8: System.out.println("请输入需要导出的歌单名称:"); String strPlayListName5=sc.next(); pl=plc.searchPlayListByName(strPlayListName5); if(pl==null) { System.out.println("没有此"+strPlayListName5+"列表的信息!"); }else { System.out.println("case 8---------------"); try { FileOutputStream fos=new FileOutputStream(strPlayListName5+".txt"); ObjectOutputStream oos=new ObjectOutputStream(fos); FileInputStream fis=new FileInputStream(strPlayListName5+".txt"); ObjectInputStream ois=new ObjectInputStream(fis); for(Song s:pl.getMusicList()) { oos.writeObject(s); } oos.writeObject(null); oos.flush(); Song s=null; try { while((s=(Song) ois.readObject())!=null) { System.out.println("歌曲--------"+s); } fos.close(); oos.close(); fis.close(); ois.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e) { } } break; default: System.out.println("该歌曲没有对应的操作"); break; } } break; } } }
同学也可以新建一个测试类,运行新的测试类试试。
2、建议同学检查一下addToPlayList()方法是否有误,是否将歌曲添加到了播放列表中。
如下:
祝学习愉快~
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星