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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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() {
     
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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