无法从键盘中输入数据存储到主播放列表中
来源:4-7 自由编程
MAYxDAY
2020-02-16 14:17:10
package com.imooc.player1;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class PlayerTest {
public void mainMenu() {
System.out.println("*********************************************");
System.out.println(" 1--播放列表管理 ");
System.out.println(" 2--播放器管理 ");
System.out.println(" 0--退出 ");
System.out.println("*********************************************");
}
public void palyListMenu() {
System.out.println("***************************************************************");
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(" 9--返回上一级菜单");
System.out.println("****************************************************************");
}
public void palyerLsit() {
System.out.println("***************************************************************");
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("****************************************************************");
}
public void test() {
PlayListCollection plc=new PlayListCollection();
PlayList mainPlayList=new PlayList("主播放列表");
plc.addPlayList(mainPlayList);
PlayList normalPlayList=null;
Scanner sc = new Scanner(System.in);
int input1 = 0, input2 = 0, input3 = 0;
PlayerTest pt = new PlayerTest();
while (true) {
pt.mainMenu();
System.out.println("请输入对应的数字:");
input1 = sc.nextInt();
if (input1 == 0) {
System.out.println("程序退出");
break;
}
switch (input1) {
case 1:
System.out.println("进入播放列表管理");
while (true) {
pt.palyListMenu();
System.out.println("请输入对应的数字:");
input2 = sc.nextInt();
if (input2 == 9) {
break;
}
switch (input2) {
case 1:
System.out.println("将歌曲添加到主播放列表");
System.out.println("请输入添加歌曲的数量:");
int count=sc.nextInt();
for(int i=1;i<=count;i++) {
System.out.println("请输入第"+i+"首歌曲的信息:");
System.out.println("请输入歌曲的id:");
String strid=sc.next();
System.out.println("请输入歌曲的名字:");
String strname=sc.next();
System.out.println("请输入歌手的名字:");
String strsinger=sc.next();
Song song=new Song(strid,strname,strsinger);
mainPlayList.addToPlayList(song);
mainPlayList.displayAllSong();
}
break;
case 2:
System.out.println("将歌曲添加到普通播放列表");
System.out.println("请输入普通列表的名字:");
String strListName=sc.next();
normalPlayList=plc.searchPlayListByName(strListName);
if(normalPlayList==null) {
System.out.println("你输入普通列表不存在!");
break;
}else {
System.out.println("请输入添加歌曲的数量:");
int count1=sc.nextInt();
for(int i=1;i<=count1;i++) {
System.out.println("请输入第"+i+"首歌曲的id:");
String strid=sc.next();
Song song=mainPlayList.searchSongById(strid);
if(song==null) {
System.out.println("这首歌在主播放列表中不存在,请继续输入歌曲信息!");
System.out.println("请输入这首歌的名字:");
String strname=sc.next();
System.out.println("请输入歌手的名字:");
String strsinger=sc.next();
Song song1=new Song(strid,strname,strsinger);
mainPlayList.addToPlayList(song1);
normalPlayList.addToPlayList(song1);
}else {
normalPlayList.addToPlayList(song);
}
}
}
break;
case 3:
System.out.println("通过歌曲id查询播放到列表的歌曲");
System.out.println("请输入查询id的播放列表");
String strListaName=sc.next();
PlayList pl=plc.searchPlayListByName(strListaName);
if(pl==null) {
System.out.println("你要查询的播放列表不存在!");
}else {
System.out.println("请输入你要查询的id!");
String strid=sc.next();
Song s=pl.searchSongById(strid);
if(s==null) {
System.out.println("你要查询的歌曲不存在!");
}else {
System.out.println("歌曲的信息为:");
System.out.println(s);
}
}
break;
case 4:
System.out.println("通过歌曲名称查询播放到列表的歌曲");
System.out.println("请输入查询歌曲名字的播放列表");
String strListaName1=sc.next();
PlayList pl1=plc.searchPlayListByName(strListaName1);
if(pl1==null) {
System.out.println("你要查询的播放列表不存在!");
}else {
System.out.println("请输入你要查询的歌曲名字!");
String strid=sc.next();
Song s=pl1.searchSongById(strid);
if(s==null) {
System.out.println("你要查询的歌曲不存在!");
}else {
System.out.println("歌曲的信息为:");
System.out.println(s);
}
}
break;
case 5:
System.out.println("修改播放列表中的歌曲");
System.out.println("请输入要修改歌曲的id");
String strSongId=sc.next();
Map<String,PlayList> pl2=plc.getPlayListMap();
Set<String> listSet=pl2.keySet();
for(String s:listSet) {
PlayList pl3=pl2.get(s);
Song song=pl3.searchSongById(strSongId);
if(song==null) {
System.out.println("没要找到要查询的歌曲!");
break;
}
else {
pl3.deleteSong(strSongId);
System.out.println("请输入要修改的歌曲信息");
System.out.println("请输入歌曲的名字");
String strname=sc.next();
System.out.println("请输入歌手的名字");
String strsinger=sc.next();
Song song1=new Song(strSongId,strname,strsinger);
pl3.updateSong(strSongId, song1);
break;
}
}
break;
case 6:
System.out.println("删除播放列表中的歌曲");
System.out.println("请输入要删除歌曲的id");
String strid=sc.next();
Map<String,PlayList> listSet1=plc.getPlayListMap();
Set<String> pl4=listSet1.keySet();
for(String s:pl4) {
PlayList pl5=listSet1.get(s);
Song song=pl5.searchSongById(strid);
if(song==null) {
System.out.println("没要找到要查询的歌曲!");
break;
}else {
pl5.deleteSong(strid);
System.out.println("删除成功");
break;
}
}
break;
case 7:
System.out.println("显示播放列表中的所有歌曲");
System.out.println("请输入要查询的播放列表的名字");
String strListName1=sc.next();
PlayList pl6=plc.searchPlayListByName(strListName1);
if(pl6!=null)
{System.out.println("该列表的歌曲为:");
pl6.displayAllSong();
break;}
else {
System.out.println("你输入的列表不存在");
}
break;
default:
System.out.println("输入数字没有对应的功能");
break;
}
}
break;
case 2:
System.out.println("进入播放器管理");
while (true) {
pt.palyerLsit();
System.out.println("请输入对应的数字:");
input3 = sc.nextInt();
if (input3 == 9) {
break;
}
switch (input3) {
case 1:
System.out.println("向播放器添加播放列表");
System.out.println("请输入普通播放列表的名字:");
String playerName=sc.next();
normalPlayList=new PlayList(playerName);
plc.addPlayList(normalPlayList);
break;
case 2:
System.out.println("从播放器删除播放列表");
System.out.println("请输入要删除的播放列表的名字");
String strListName=sc.next();
if(strListName.equals("主播放列表")) {
System.out.println("主播放列表不能删除");
}
PlayList pl=plc.searchPlayListByName(strListName);
if(pl==null) {
System.out.println("该列表不存在");
}else {
plc.deletePlayList(pl);
}
break;
case 3:
System.out.println("通过名字查询播放列表信息");
System.out.println("请输入要查询列表的名字");
String strName=sc.next();
PlayList pl1=plc.searchPlayListByName(strName);
if(pl1==null) {
System.out.println("你查询的播放列表名称不存在");
break;
}else {
System.out.println("你要查询的播放列表信息为:");
pl1.displayAllSong();
}
break;
case 4:
System.out.println("显示所有播放列表名称");
plc.disPlayListName();
break;
default:
System.out.println("输入数字没有对应的功能");
break;
}
}
break;
default:
System.out.println("输入数字没有对应的功能");
break;
}
}
}
public static void main(String[] args) {
PlayerTest pt=new PlayerTest();
pt.test();
}
}
4回答
同学,你好!程序的运行效果如下,歌曲已经添加到主播放列表中了,没有出现同学说的问题。
不过你的代码一开始有一个编译错误,在PlayerTest类中,如下所示的方法名写错了,应改为;
pl1.dispalyAllSong();
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
MAYxDAY
提问者
2020-02-16
package com.imooc.player;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class PlayListCollection {
Map<String,PlayList> playListMap;
public PlayListCollection() {
playListMap=new HashMap<>();
}
public Map<String, PlayList> getPlayListMap() {
return playListMap;
}
public void setPlayListMap(Map<String, PlayList> playListMap) {
this.playListMap = playListMap;
}
/**
* 添加播放列表
* @param playList
*/
public void addPlayList(PlayList playList) {
playListMap.put(playList.getPlayListName(), playList);
}
/**
* 通过名字查询
* @param playListName 查询歌单的名字
* @return 歌单列表
*/
public PlayList searchPlayListByName(String playListName) {
PlayList playList=null;
Set<String> playListNameSet=playListMap.keySet();
for(String s:playListNameSet) {
if(s.equals(playListName)) {
playList=playListMap.get(s);
break;
}
}
return playList;
}
/**
* 删除播放列表
* @param playList
*/
public void deletePlayList(PlayList playList) {
playListMap.remove(playList.getPlayListName());
}
/**
* 显示所有播放列表
*/
public void disPlayListName() {
Set<String> playListNameSet=playListMap.keySet();
for(String s:playListNameSet) {
System.out.println(s);
}
}
}
MAYxDAY
提问者
2020-02-16
package com.imooc.player;
import java.util.ArrayList;
import java.util.List;
public class PlayList {
private String playListName;
private List<Song> musicList;
public PlayList(String playListName) {
this.playListName = playListName;
musicList = new ArrayList<Song>();
}
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;
}
/**
* 添加歌曲的方法
*
* @param song
*/
public void addToPlayList(Song song) {
boolean flag = false;
for (Song song1 : musicList) {
if (song1.equals(song)) {
flag = true;
break;
}
}
if (flag) {
System.out.println("歌曲已存在!");
} else {
musicList.add(song);
}
}
//显示播放列表所有所有歌曲
public void dispalyAllSong() {
for (Song song : musicList) {
System.out.println(song);
}
}
//通过id查询歌曲
public Song searchSongById(String id) {
Song song = null;
for (Song song1 : musicList) {
if (song1.getId().equals(id)) {
song = song1;
break;
}
}
return song;
}
//通过name查询歌曲
public Song searchSongByName(String name) {
Song song = null;
for (Song song1 : musicList) {
if (song1.getName().equals(name)) {
song = song1;
break;
}
}
return song;
}
//修改歌曲
public void updateSong(String id,Song song) {
Song song1=searchSongById(id);
if(song1==null) {
System.out.println("没有找到id为"+id+"对应的歌曲信息!");
}else {
musicList.remove(song1);
musicList.add(song);
System.out.println("修改成功!");
}
}
//删除歌曲
public void deleteSong(String id) {
Song song=searchSongById(id);
if(song==null) {
System.out.println("没有找到id为"+id+"对应的歌曲信息!");
}else {
musicList.remove(song);
}
}
}
MAYxDAY
提问者
2020-02-16
package com.imooc.player;
public class Song {
private String id;//id
private String name;//歌曲名字
private String singer;//歌手
public Song(String id, String name, String singer) {
this.id = id;
this.name = name;
this.singer = singer;
}
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;
}
@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.getClass()==Song.class) {
Song song=(Song)obj;
return song.getId().equals(id)&&song.getName().equals(name)&&song.getSinger().equals(singer);
}return false;
}
@Override
public String toString() {
return "歌曲信息:id:" + id + "歌曲名字:" + name + "歌手:" + singer ;
}
}
相似问题