为什么不能显示普通列表的信息
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 | switch (num3){ //添加主播放列表歌曲管理 case 1 :System.out.println( "**现在向主播放列表添加歌曲**" ); System.out.println( "输入要添加的歌曲id" ); String songid=input.next(); System.out.println( "输入要添加的歌曲名称" ); String songName=input.next(); System.out.println( "输入要添加的歌手名字" ); String songer=input.next(); Song song= new Song(songid,songName,songer); playList.addToPlayList(song); break ; //添加到普通播放列表 case 2 :System.out.println( "**现在向普通播放列表添加歌曲**" ); System.out.println( "请输入要添加的列表名称" ); String ordinaryListName=input.next(); System.out.println( "输入要添加的歌曲id" ); songid=input.next(); System.out.println( "输入要添加的歌曲名称" ); songName=input.next(); System.out.println( "输入要添加的歌手名字" ); songer=input.next(); Song song2= new Song(songid,songName,songer); //判断播放列表是否存在 if (PLC.playmap.containsKey(ordinaryListName)){ ((PlayList)PLC.playmap.get(ordinaryListName)).addToPlayList(song2); } else { System.out.println( "播放列表不存在" ); } break ; case 3 :System.out.println( "输入要查询的歌曲id" ); String serchsongid=input.next(); System.out.println(playList.serchSongByID(serchsongid)); break ; case 4 :System.out.println( "输入要查询的歌曲名称" ); String serchsongName=input.next(); System.out.println(playList.serchSongBYName(serchsongName)); break ; case 5 :System.out.println( "输入要修改的歌曲id" ); String updateId=input.next(); //要修改的歌曲ID playList.updateSong(updateId); break ; case 6 :System.out.println( "请要删除的歌曲id" ); String deleId=input.next(); playList.deleteSong(deleId); break ; //显示播放列表歌曲的方法 case 7 :playList.disPlayAllSong(); break ; case 8 :playList.exporPlayList(); break ; case 9 : break ; default :System.out.println( "输入错误,请重新输入" ); continue ; } |
上面是播放列表的主方法
下面是播放器的主方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | case 1 : int num2= 0 ; //播放器变量 do { test.PlayerMenu(); System.out.println( "请输入对应数字对播放器进行管理" ); num2=input.nextInt(); switch (num2){ case 1 :System.out.println( "输入要添加的播放列表名称" ); String str=input.next(); //用于保存播放器的名称str PlayList ordinaryList= new PlayList(); ordinaryList.setPlayListName(str); //给播放列表赋名 PLC.addPlayList(ordinaryList); break ; case 2 :System.out.println( "输入要删除播放列表名称" ); //将找到的名字赋值给相关方法进行删除 PLC.deletePlayList(PLC.getPlaymap().get(input.next())); break ; case 3 :System.out.println( "通过名字找播放列表的信息" ); PLC.serchPlayByName(input.next()); break ; case 4 :System.out.println( "显示所有播放列表的名称" ); PLC.disPlayListName(); break ; case 9 : break ; default :System.out.println( "输入错误,请重新输入" ); continue ; } |
以下是PlayList类的显示方法和添加歌曲的方法
1 2 3 4 5 6 7 8 | //添加歌曲到播放列表 public void addToPlayList(Song song){ musiList.add(song); } //显示所有播放列表的歌曲 public void disPlayAllSong(){ System.out.println(musiList.toString()); } |
问题是:为什么只能显示主播放列表的的歌曲信息,而不能显示普通播放列表的信息呢?需要两个List来存放歌曲吗?
正在回答 回答被采纳积分+1
这个是你的PlayList中的代码,部分修改了,部分自己参考着改一下。
package playsystem;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PlayList {
private String playListName;//播放列表的名称
Scanner input=new Scanner(System.in);
//PlayList里面只有两个属性,播放列表名称和存放歌曲的ArrayList
//PlayListCollection PLC=new PlayListCollection();
//Song song;
ArrayList<Song> musiList=new ArrayList<Song>();//List集合用于存放歌曲
public PlayList(){
}
//
public PlayList(String playListName, ArrayList<Song> musiList) {
super();
this.playListName = playListName;
this.musiList = musiList;
}
public String getPlayListName() {
return playListName;
}
public void setPlayListName(String playListName) {
this.playListName = playListName;
}
//添加歌曲到播放列表
public void addToPlayList(Song song){
//首先判断歌曲是否存在,再添加,排除重复的情况
musiList.add(song);
}
//显示所有播放列表的歌曲
public void disPlayAllSong(){
System.out.println(musiList.toString());
}
//通过ID名来搜索歌曲
//返回值应为Song类的对象,这个方法改过了
public Song serchSongByID(String id){
Song song=null;
for(int i=0;i<musiList.size();i++){
if(((Song)(musiList.get(i))).getId().equals(id)){
song=musiList.get(i);
}
}
return song;
}
//通过歌名来搜索歌曲
//这个方法照上面的自己改一下
public String serchSongBYName(String name){
String str=null;
for(int i=0;i<musiList.size();i++){
if(((Song)(musiList.get(i))).getName().equals(name)){
str=musiList.get(i).toString();
}
}
return str;
}
//修改歌曲的方法 用的是添加的方法
public void updateSong(String id){
//先判断歌曲是否存在,然后再输入信息进行修改
for(int i=0;i<musiList.size();i++){
if(((Song)(musiList.get(i))).getId().equals(id)){
System.out.println("请输入要修改的歌曲名称");
String name=input.next();
System.out.println("请输入要修改的歌手名字");
String singer=input.next();
musiList.get(i).setName(name);
musiList.get(i).setSonger(singer);
System.out.println("修改成功");
}
}
}
//删除歌曲的方法,这个改过了,修改可以参考这个做
public void deleteSong(String id){
//删除歌曲,先查询是否存在,再删除
// for(int i=0;i<musiList.size();i++){
// if(((Song)(musiList.get(i))).getId().equals(id)){
// musiList.remove(i);
// }
//}
Song song=this.serchSongByID(id);
if(song!=null){
musiList.remove(song);
System.out.println("删除成功");
}else{
System.out.println("该歌曲不存在!");
}
}
//导出歌单的方法,这个方法改过了
public void exporPlayList(){
FileOutputStream fis;
ObjectOutputStream fos;
try {
fis=new FileOutputStream("c:\\imooc\\score.txt");
fos=new ObjectOutputStream(fis);
//要循环输出musicList中的song
for(int i=0;i<musiList.size();i++){
fos.writeObject(musiList.get(i));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
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 | package playsystem; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class PlayListCollection { public PlayListCollection(){ } //创建Map属性 Map<String,PlayList> playmap= new HashMap<String,PlayList>(); public Map<String, PlayList> getPlaymap() { return playmap; } public void setPlaymap(Map<String, PlayList> playmap) { this .playmap = playmap; } //向播放器添加播放列表 public void addPlayList(PlayList ordinaryList){ playmap.put(ordinaryList.getPlayListName(), ordinaryList); } //删除播放列表 public void deletePlayList(PlayList playList){ if (playmap.containsKey(playList.getPlayListName())){ playmap.remove(playList.getPlayListName()); } } //通过名字查列表 public PlayList serchPlayByName(String playListName){ if (playmap.containsKey(playListName)){ System.out.println( "该播放列表存在!" ); System.out.println( "该播放列表的名称是:" +playListName); } return playmap.get(playListName); } //显示所有播放列表 public void disPlayListName(){ Set<Entry<String,PlayList>> mapset=playmap.entrySet(); for (Entry<String,PlayList> newmapset:mapset){ System.out.println(newmapset.getKey()); System.out.println(newmapset.getValue()); } } |
这个是PlayListCollection类的代码,这个强制转换是之前出现问题后我加上的,加上一样解决不了问题, 显示普通列表的歌曲总是输出null值,查到头大都想不出问题出在那里。求指点迷津。
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧