歌单导出异常

歌单导出异常

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)


正在回答

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

1回答

你让歌曲类implements Serializable一下。只有Serializable的类,才能用ObjectOutputStream进行写对象。祝:学习愉快

  • 已经实现了这个接口 还是一样异常
    2018-04-10 17:05:33
  • at songdemo.Test.playlist(Test.java:239) Test.java中的第239行是什么?提示是那里有问题。有没有什么地方与Scanner相关的操作,把代码贴全一些,如果LOG变了,也重新贴一下。
    2018-04-10 17:17:28
  • 非常感谢!
    2018-04-13 01:23:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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