为什么不能显示普通列表的信息
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; }
上面是播放列表的主方法
下面是播放器的主方法
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类的显示方法和添加歌曲的方法
//添加歌曲到播放列表 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();
}
}
}
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 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星