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