歌单导出异常
case 8:// 导出歌单 System.out.println("导出歌单"); System.out.println("请输入要导出的播放列表名称:"); playlistname = in.next(); playlist = one.searchPlayListByName(playlistname); if (playlist != null) { try { FileOutputStream fos = new FileOutputStream(playlistname + "歌单.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); try { oos.writeObject(playlist); System.out.println("导出成功!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("导出失败!"); } fos.close(); oos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { System.out.println("未找到该播放列表"); } break; case 9:// 返回上一级菜单 arg = false; break; default: System.out.println("请输入指定数字进行操作!请重新输入"); break;
import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class PlayList implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String playListName; List<Song> musiclist = new ArrayList<Song>(); Scanner in=new Scanner(System.in); public PlayList(String playListName ) { this.playListName = playListName; } 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) { this.getMusiclist().add(song); } // 显示播放列表中所有歌曲 public void displayAllSong() { System.out.println("播放列表中的所有歌曲为:"); for(Song song:this.getMusiclist()) { System.out.println(song); } } // 通过ID查询歌曲 public Song searchSongById(String id) { for(Song song:(this.getMusiclist())) { if(song.getId().equals(id)) { return song; } } return null; } // 通过名称查询歌曲 public Song serchSongByName(String n) { for(Song song:(this.getMusiclist())) { if(song.getName().equals(n)) { return song; } } return null; } // 修改歌曲 public void updateSong(String id, Song song) { for(Song a:(this.getMusiclist())) { if(a.getId().equals(id)) { int i=this.getMusiclist().indexOf(a); this.getMusiclist().set(i, song); } } } // 从播放列表删除歌曲 public void deleteSong(String id) { Song song=null; for(Song a:(this.getMusiclist())) { if(a.getId().equals(id)) { song=a; break; } } this.getMusiclist().remove(song); } }
异常代码
java.io.NotSerializableException: java.util.Scanner
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at songdemo.Test.playlist(Test.java:239)
at songdemo.Test.main(Test.java:367)
正在回答
你让歌曲类implements Serializable一下。只有Serializable的类,才能用ObjectOutputStream进行写对象。祝:学习愉快
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星