怎么写啊,添加歌曲到主播放列表会报空指针
case 1: System.out.println("将歌曲添加到主播放列表\n请输入要添加的歌曲的数量:"); n = in.nextInt(); for (int i = 0; i < n; i++) { System.out.println("请输入第" + (i + 1) + "首歌曲\n请输入歌曲id:"); String songId = in.next();//输入歌曲的id System.out.println("请输入歌曲的名称:"); String songName = in.next();//输入歌曲的名字 System.out.println("请输入演唱者:"); String singerName = in.next();//输入歌手的名字 Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值 playList.addToPlayList(songInfo); Set<String> keySet = map.keySet(); //遍历keySet for(String key:keySet) { //找到主播放列表 if("主播放列表".equals(key)) { map.put(key,playList); playListCollection.setPlayListMap(map);//播放列表存储歌曲信息 break;//添加完毕则跳出循环 } }
//将歌曲添加到播放列表 public void addToPlayList(Song song) { if(musicList.contains(song)) { System.out.println("该歌曲已存在主播放列表,请勿重复操作!"); } else { musicList.add(song); } }
101
收起
正在回答
3回答
如果是报空指针可以下断点跟一下程序看是哪个地方报的,特别是使用musicList、playList的时候,确定在之前例如musicList = new ArrayList<Song>();被正确创建了。除此之外,代码还有一个地方
Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值
这里并没有将输入的歌曲信息添加到songInfo对象中,检查一下。
荒小北158
2017-09-13 20:01:26
package com.imooc.play; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; public class PlayListCollection { private Map<String,PlayList> playListMap = new HashMap<String,PlayList>(); //无参构造方法 public PlayListCollection() { } //带参构造方法 public PlayListCollection(Map<String, PlayList> playListMap) { super(); this.playListMap = playListMap; } //setter/getter public Map<String, PlayList> getPlayListMap() { return playListMap; } public void setPlayListMap(Map<String, PlayList> playListMap) { this.playListMap = playListMap; } //添加播放列表 public void addPlayList(PlayList playList) { boolean flag = true; //取得keySet Set<String> keySet = playListMap.keySet(); //遍历keySet for(String key:keySet) { //遍历中如果找到map中的key值与我们添加的播放列表名相同则无法添加 if((playList.getPlayListName()).equals(key)) { System.out.println("该播放列表存在!\n该播放列表的名称为:"+key); flag = false; break; } } if(flag) { playListMap.put(playList.getPlayListName(), null); } } //删除播放列表 public void deletePlayList(PlayList playList) { } //通过名字查询 public PlayList searchPlayListByName(String playListName) { boolean flag = true; //取得keySet Set<String> keySet = playListMap.keySet(); //遍历keySet for(String key:keySet) { //如果要查询的列表名字与某个key相同 则输出该列表的相关信息 if(playListName.equals(key)) { System.out.println("该播放列表存在!\n该播放列表的名称为:"+key+ "\n播放列表中的所有歌曲为:"+((Song)(playListMap.get(key).getMusicList())).toString()); flag = false; break; } if(flag) { System.out.println("该播放列表不存在!"); } } return null; } //显示所有播放列表名称 public void displayPlayListName() { //通过keySet来输出playListMap中所有的key(播放列表名称) Set<String> keySet = playListMap.keySet(); System.out.println("显示所有的播放列表名称:"+"\n播放列表的名称:"); for(String key:keySet) { System.out.println(key); } } }
package com.imooc.play; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class PlayList { private String playListName;//播放列表的名称 private List<Song> musicList = new ArrayList<Song>();//储存歌曲信息的List集合 //无参构造方法 public PlayList() { } //带参构造方法 public PlayList(String playListName, List musicList) { super(); this.playListName = playListName; this.musicList = musicList; } //getter/setter public String getPlayListName() { return playListName; } public void setPlayListName(String playListName) { this.playListName = playListName; } public List getMusicList() { return musicList; } public void setMusicList(List musicList) { this.musicList = musicList; } //将歌曲添加到播放列表 public void addToPlayList(Song song) { musicList.add(song); } //通过id查询歌曲 public Song searchSongById(String id) { int n = 0; boolean flag = false; for(int i = 0; i < musicList.size(); i++) { if (((Song)(musicList.get(i))).getId() == id) { flag = true; n = i; break; } } if(flag) { System.out.println(musicList.get(n)); return null; } else{ System.out.println("没有找到该歌曲!"); return null; } } //通过名称查询歌曲 public Song searchSongByName(String n) { int k = 0; boolean flag = false; for(int i = 0; i < musicList.size(); i++) { if (((Song)(musicList.get(i))).getName() == n) { flag = true; k = i; break; } } if(flag) { System.out.println(musicList.get(k)); return null; } else{ System.out.println("没有找到该歌曲!"); return null; } } //修改歌曲 public void updateSong(Song song) { } //从播放列表中删除歌曲 public void deleteSong(String id) { boolean flag = false; int n = 0; for (int i = 0; i < musicList.size(); i++) { if (id.equals(((Song) musicList.get(i)).getId())) { flag = true; n = i; } } if (flag) { musicList.remove(n); } else { System.out.println("您要删除的歌曲不在播放列表中!"); } } //显示播放列表中的所有歌曲 public void exportPlayList() { for(int i = 0; i < musicList.size(); i++) { System.out.println(musicList.get(i)); } } }
package com.imooc.play; public class Song { private String id;//歌曲的id private String name;//歌曲名称 private String singer;//演唱者 //构造方法 public Song(String id, String name, String singer) { super(); this.id = id; this.name = name; this.singer = singer; } //getter/setter public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } //重写toString() @Override public String toString() { return "[歌曲id:" + id + ", 歌曲:" + name + ", 演唱者:" + singer + "]"; } //重写hashCode和equals @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((singer == null) ? 0 : singer.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Song other = (Song) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (singer == null) { if (other.singer != null) return false; } else if (!singer.equals(other.singer)) return false; return true; } }
荒小北158
2017-09-13 20:00:04
package com.imooc.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Scanner; import java.util.Set; import com.imooc.play.PlayList; import com.imooc.play.PlayListCollection; import com.imooc.play.Song; public class TestDemo { //主菜单列表 public static void mainMenu() { System.out.println("**************************"); System.out.println("**主菜单**"); System.out.println("1--播放列表管理"); System.out.println("2--播放器管理"); System.out.println("0--退出"); System.out.println("**************************"); System.out.println("请输入对应数字进行操作:"); } // 播放列表菜单 public static void playListMenu() { System.out.println("*********************"); System.out.println("1--将歌曲添加到主播放列表"); System.out.println("2--将歌曲添加到普通播放列表"); System.out.println("3--通过歌曲id查询播放列表中的歌曲"); System.out.println("4--通过歌曲名称查询播放列表中的歌曲"); System.out.println("5--修改播放列表中的歌曲"); System.out.println("6--删除播放列表中的歌曲"); System.out.println("7--显示播放列表中的所有歌曲"); System.out.println("8--导出歌单"); System.out.println("9--返回上一级菜单"); System.out.println("*********************"); System.out.println("请输入对应的数字进行列表管理:"); } //播放器列表管理菜单 public static void playListCollectionMenu() { System.out.println("****************"); System.out.println("1--向播放器添加播放列表"); System.out.println("2--从播放器删除播放列表"); System.out.println("3--通过名字查询播放列表名称"); System.out.println("4--显示所有播放列表名称"); System.out.println("9--返回上一级菜单"); System.out.println("*****************"); System.out.println("请输入对应的数字进行播放器管理:"); } public static void main(String[] args) { //创建一个播放列表的实例 PlayList playList = new PlayList("主播放列表",null); int n = -1; //创建一个hashMap用于存储列表信息 作为传入给playListCollection的媒介 HashMap<String,PlayList> map = new HashMap<String,PlayList>(); map.put("主播放列表", null); //创建一个播放器的实例 PlayListCollection playListCollection = new PlayListCollection(map);//将map传入,也就是将主播放列表作为key值传入 while( n!=0 ) {//用于控制退出程序 mainMenu();//调用菜单列表方法 Scanner in = new Scanner(System.in); n = in.nextInt();//输入对应列表数字 switch(n) { case 1: while(n!=9) {//while循环用于控制返回上一级菜单 playListMenu();//播放列表菜单 n = in.nextInt();//输入对应列表数字 switch(n) { /* * 将歌曲添加到主播放列表 */ case 1: System.out.println("将歌曲添加到主播放列表\n请输入要添加的歌曲的数量:"); n = in.nextInt(); for (int i = 0; i < n; i++) { System.out.println("请输入第" + (i + 1) + "首歌曲\n请输入歌曲id:"); String songId = in.next();//输入歌曲的id System.out.println("请输入歌曲的名称:"); String songName = in.next();//输入歌曲的名字 System.out.println("请输入演唱者:"); String singerName = in.next();//输入歌手的名字 Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值 System.out.println(songInfo.toString()); playList.addToPlayList(songInfo);//将歌曲添加到PlayList类中的playList集合中 Set<String> keySet = map.keySet(); //遍历keySet for(String key:keySet) { //找到主播放列表 if("主播放列表".equals(key)) { map.put(key,playList); playListCollection.setPlayListMap(map);//播放列表存储歌曲信息 break;//添加完毕则跳出循环 } } } break;//添加完歌曲信息后跳出switch //将歌曲添加到普通播放列表 case 2: System.out.println("将歌曲添加到普通播放列表\n请输入要添加的播放列表名称:"); String strPlayListName = in.next();//输入播放列表的名称 /* * 首先要判断歌曲添加到的普通播放列表存不存在 */ boolean flag = true; //取得keySet Set<String> keySet = playListCollection.getPlayListMap().keySet(); //遍历keySet for(String key:keySet) { //判断playListMap中是否存在要添加的播放列表 if(strPlayListName.equals(key)) { /* * 进入if说明找寻到了想要添加歌曲的播放列表,在if 语句里面完成歌曲的添加 */ System.out.println("请输入要添加的歌曲的数量:"); n = in.nextInt(); for (int i = 0; i < n; i++) { System.out.println("请输入第" + (i + 1) + "首歌曲\n请输入歌曲id:"); String songId = in.next();//输入歌曲的id //判断添加歌曲的id是否存在于主播放列表 for(int k = 0; k < playList.getMusicList().size(); k++) { if(songId.equals(((Song)(playList.getMusicList()).get(k)).getId())) { /* * 这里直接将主播放列表中的歌曲添加到普通播放列表中 */ flag = false; break;//找到与主播放列表里面相同的id,直接跳出循环 } } if(flag) { flag = true; System.out.println("该歌曲在主播放列表不存在,继续输入歌曲的其他信息!"); } System.out.println("请输入歌曲的名称:"); String songName = in.next();//输入歌曲的名字 System.out.println("请输入演唱者:"); String singerName = in.next();//输入歌手的名字 //判断主播放列表当中是否存在所要添加的歌曲id Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值 playList.addToPlayList(songInfo);//播放列表存储歌曲信息 } flag = false; } } if(flag) { System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!"); } /* * 输出主播放列表和普通播放列表的所有信息 */ break; /* * 通过歌曲id查询播放列表中的歌曲 */ case 3: break; /* * 通过歌曲名称查询播放列表中的歌曲 */ case 4: break; /* * 修改播放列表中的歌曲 */ case 5: break; /* * */ case 6: break; /* * 显示播放列表中的歌曲 */ case 7: break; /* * 导出歌单 (输入输出流) */ case 8: break; case 9: n = 9; break; } } break; //播放器管理 case 2: while(n!=9) { playListCollectionMenu();//播放器管理列表 n = in.nextInt();//输入列表对应数字 switch(n) { /* * 向播放器添加列表 */ case 1: System.out.println("向播放器添加播放列表\n输入要添加的播放列表名称:"); String playListName = in.next(); playList.setPlayListName(playListName);//列表名称的赋值 playListCollection.addPlayList(playList); break; /* * 从播放器中删除播放列表 */ case 2: break; /* * 通过播放列表的名称查询列表内的信息 */ case 3: System.out.println("通过名字查询播放列表信息:"+"\n请输入要查询的播放列表名称:"); playListName = in.next();//输入要查询的播放列表名称 playListCollection.searchPlayListByName(playListName); break; /* * 显示所有的播放列表名称 */ case 4: playListCollection.displayPlayListName(); } } break; case 0: n = 0; System.out.println("谢谢使用!"); break; } } } }
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星