添加播放列表一直空指针异常,具体哪里有错误?

添加播放列表一直空指针异常,具体哪里有错误?

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;



/**
 * 属性 playListMap map
 * @author RYAN
 *getter,setter方法
 *public void addPlayList(PlayList pl);添加播放列表
 *public void deletePlayList(PlayList lp);删除播放列表
 *public PlayList searchPlayListByName();通过名称查询播放列表;
 *public void displayAllPlayListName();显示所有播放列表名称;
 */
public class PlayListCollection {
private Map<String,	PlayList> playListMap;

public PlayListCollection() {
	 Map<String,PlayList> playListMap=new HashMap<>();
}

//public PlayListCollection(Map<String, PlayList> playListMap) {
//	super();
//	this.playListMap = playListMap;
//}

public Map getPlayListMap() {
	return playListMap;
}

public void setPlayListMap(Map playListMap) {
	this.playListMap = playListMap;
}

//添加播放列表
public void addPlayList(PlayList pl) {
	Scanner s=new Scanner(System.in);
	System.out.println("向播放器中添加播放列表");
	System.out.println("请输入要添加的播放列表的名称:");
	String name=s.next();
	pl.setPlayListName(name);
	
	playListMap.put(pl.getPlayListName(),pl);
	
	System.out.println("添加播放列表成功~");
}
//删除播放列表
public void deletePlayList(PlayList lp) {
	System.out.println("");
}
//通过名称查询播放列表;
public PlayList searchPlayListByName() {
	Scanner s =new Scanner(System.in);
	System.out.println("通过播放列表名称进行查询");
	System.out.println("请输入要查询的播放列表名称:");
	String n=s.next();
if(playListMap.containsKey(n)) {
	System.out.println("该播放列表存在~");
	System.out.println( "该播放列表的名称为"+n);
	System.out.println("播放列表的所有歌曲为");
	return (PlayList) playListMap.get(n);
}
		
	
	
	return (PlayList) getPlayListMap().get(n);
	
}
//显示所有播放列表名称;
public void displayAllPlayListName() {
	Iterator<PlayList> it= playListMap.values().iterator();
	while(it.hasNext()) {
	System.out.println(it.next().getPlayListName());	
	}
	
	
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/**
 *属性有playListName(播放列表名称),musicList(播放列表的歌曲集合)
 * @author RYAN
 *构造方法,getter,setter方法
 *public void addToPlayList(Song song);将歌曲添加到播放列表
 *public void displayAllSong();显示播放列表所有歌曲;
 *public Song  searchSongById(String id);通过歌曲id查询歌曲
 *public Song searchSongByName(String name);通过歌曲名称查询歌曲;
 *public void updateSong(Song song);修改歌曲;
 *public void deleteSong(String id);删除歌曲;
 *public void exportPlayList();导出播放列表
 */
public class PlayList {
String playListName;
List<Song> musicList=new ArrayList<Song>();
public PlayList(String playListName){
	 List playList=new ArrayList();
	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 PlayList(String playListName, List<Song> musicList) {
	super();
	this.playListName = playListName;
	this.musicList = musicList;
	
}


public PlayList() {
	super();
	// TODO Auto-generated constructor stub
}
//将歌曲添加到播放列表
public void addToPlayList(Song song) {
	
	System.out.println("将歌曲添加到主播放列表~");
	System.out.println("请输入要添加歌曲的数量:");
	Scanner sc=new Scanner(System.in);
	int n=sc.nextInt();
	for(int i=0;i<n;i++) {
		System.out.println("请输入第"+(i+1)+"首歌曲的信息");
		System.out.println("请输入歌曲的id:");
		String id=sc.next();
		song.setId(id);
		System.out.println("请输入歌曲的名称:");
		String name=sc.next();
		song.setName(name);
		System.out.println("请输入歌曲的演唱者:");
		String singer=sc.next();
		song.setSinger(singer);
		musicList.add(song);
		System.out.println("添加歌曲成功~");
		
	}
	
}
//显示播放列表所有歌曲;
public void displayAllSong() {
	
	for(Song s:musicList) {
		System.out.println(s);
	}
//	Iterator<Song> it= musicList.iterator() ;
//	while(it.hasNext()) {
//		
//		System.out.println(it.next());
//	}
}
//通过歌曲id查询歌曲
public Song  searchSongById(String id) {
	return null;
	
}
//通过歌曲名称查询歌曲
public Song searchSongByName(String name) {
	return null;
	
}
//修改歌曲
public void updateSong(Song song) {
	
}
//删除歌曲
public void deleteSong(String id) {
	
}
//导出播放列表
public void exportPlayList() {
	
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;



/**
 * 属性 playListMap map
 * @author RYAN
 *getter,setter方法
 *public void addPlayList(PlayList pl);添加播放列表
 *public void deletePlayList(PlayList lp);删除播放列表
 *public PlayList searchPlayListByName();通过名称查询播放列表;
 *public void displayAllPlayListName();显示所有播放列表名称;
 */
public class PlayListCollection {
private Map<String,	PlayList> playListMap;

public PlayListCollection() {
	 Map<String,PlayList> playListMap=new HashMap<>();
}

//public PlayListCollection(Map<String, PlayList> playListMap) {
//	super();
//	this.playListMap = playListMap;
//}

public Map getPlayListMap() {
	return playListMap;
}

public void setPlayListMap(Map playListMap) {
	this.playListMap = playListMap;
}

//添加播放列表
public void addPlayList(PlayList pl) {
	Scanner s=new Scanner(System.in);
	System.out.println("向播放器中添加播放列表");
	System.out.println("请输入要添加的播放列表的名称:");
	String name=s.next();
	pl.setPlayListName(name);
	
	playListMap.put(pl.getPlayListName(),pl);
	
	System.out.println("添加播放列表成功~");
}
//删除播放列表
public void deletePlayList(PlayList lp) {
	System.out.println("");
}
//通过名称查询播放列表;
public PlayList searchPlayListByName() {
	Scanner s =new Scanner(System.in);
	System.out.println("通过播放列表名称进行查询");
	System.out.println("请输入要查询的播放列表名称:");
	String n=s.next();
if(playListMap.containsKey(n)) {
	System.out.println("该播放列表存在~");
	System.out.println( "该播放列表的名称为"+n);
	System.out.println("播放列表的所有歌曲为");
	return (PlayList) playListMap.get(n);
}
		
	
	
	return (PlayList) getPlayListMap().get(n);
	
}
//显示所有播放列表名称;
public void displayAllPlayListName() {
	Iterator<PlayList> it= playListMap.values().iterator();
	while(it.hasNext()) {
	System.out.println(it.next().getPlayListName());	
	}
	
	
}
}


正在回答

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

1回答

如果是addToPlayList()方法中报空指针,你需要检查一下传进来的song不能为null,musicList.add(song);这句中的musicList不能为null。

  • 慕后端3163330 提问者 #1
    addPlayList()这个方法空指针异常
    2017-08-08 11:58:11
  • irista23 回复 提问者 慕后端3163330 #2
    那就看一下pl和playListMap是否为空,估计playListMap是空的,确认你之前是否初始化这个集合了。
    2017-08-08 12:01:19
  • 慕后端3163330 提问者 #3
    非常感谢!
    2017-08-08 18:38:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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