修改播放列表中的歌曲
package comm.imooc.player;
public class Song {
/**
* 属性:歌曲id,歌曲名,演唱者
*/
private String id;
private String name;
private String singer;
/**
* 无参构造方法
*/
public Song() {
}
/**
* 多参构造方法给属性赋值
* @param id
* @param name
* @param singer
*/
public Song(String id, String name, String singer) {
this.id = id;
this.name = name;
this.singer = singer;
}
/**
* geter和setter方法
* @return
*/
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;
}
/**
* 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;
}
/**
* 重写toString方法
*/
@Override
public String toString() {
return "歌曲信息:歌曲id:" + id + ",歌曲名:" + name + ",演唱者:" + singer;
}
}package comm.imooc.player;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PlayList{
Scanner sc=new Scanner(System.in);
/**
* 属性:播放列表名称,播放列表中的歌曲集合
*/
private String playListName;
List<Song> musicList=new ArrayList<Song>();
/**
* 无参构造方法
*/
public PlayList() {
}
/**
* 多参构造方法
* @param playListName
* @param musicList
*/
public PlayList(String playListName, List<Song> musicList) {
super();
this.playListName = playListName;
this.musicList = musicList;
}
/**
* getter和setter方法
* @return
*/
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) {
if(!(musicList.contains(song))) {
musicList.add(song);
}else {
System.out.println("该播放列表中已有该歌曲!");
}
}
/**
* 方法13:通过id查询歌曲
* @param id
* @return
*/
public Song searchSongById(String id) {
Song songg=new Song();
for(Song song:musicList) {
if(song.getId().equals(id)) {
songg=song;
}
}
return songg;
}
/**
* 方法14:通过名称查询歌曲
* @param name
* @return
*/
public void searchSongByName(String name) {
for(Song song:musicList) {
if(song.getName().equals(name)) {
System.out.println(song);
}
}
}
/**
* 方法15:修改歌曲
* @param song
*/
public void updateSong(Song song) {
System.out.println("请输入修改后的歌曲名称:");
String name=sc.next();
song.setName(name);
System.out.println("请输入修改后的演唱者:");
String singer=sc.next();
song.setSinger(singer);
}
/**
* 方法16:从播放列表删除歌曲
* @param id
*/
public void deleteSong(String id) {
}
/**
* 方法17:显示播放列表中所有歌曲
*/
public void disaplayAllSong() {
System.out.println("播放列表中的所有歌曲为:");
for(int i=0;i<musicList.size();i++) {
System.out.println(musicList.get(i));//!!!
}
}
/**
* 方法18:导出歌单
*/
public void exportPlayList() {
}
/**
* 重写toString方法
*/
@Override
public String toString() {
return playListName;
}
}package comm.imooc.player;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class PlayListCollection {
Scanner sc=new Scanner(System.in);
/**
* 定义存放播放列表的集合(playListMap)
*/
Map<String,PlayList> playListMap;
/**
* 无参构造方法
*/
public PlayListCollection() {
}
/**
* 多参构造方法
* @param playListMap
*/
public PlayListCollection(Map<String, PlayList> playListMap) {
super();
this.playListMap = playListMap;
}
/**
* getter和setter方法
* @return
*/
public Map<String, PlayList> getPlayListMap() {
return playListMap;
}
public void setPlayListMap(Map<String, PlayList> playListMap) {
this.playListMap = playListMap;
}
/**
* 方法21:添加播放列表
* @param playlist
*/
public void addPlayList(PlayList playlist) {
System.out.println("向播放器添加播放列表");
System.out.println("输入要添加的播放列表名称:");
String playlistname=sc.next();
playListMap.put(playlistname, new PlayList(playlistname,new ArrayList<Song>()));
}
/**
* 方法22:删除播放列表
* @param playList
*/
public void deletePlayList(PlayList playList) {
System.out.println("请输入要删除的播放列表名称:");
String playlistname=sc.next();
if(playListMap.containsKey(playlistname)) {
playListMap.remove(playlistname, playList);
System.out.println("删除成功!");
}else {
System.out.println("播放器中没有该播放列表!");
}
}
/**
* 方法23:通过名字查询
* @param playListName
* @return
*/
public PlayList searchListByName(String playListName) {
System.out.println("请输入要查询的播放列表名称:");
String playlistname=sc.next();
if(playListMap.containsKey(playlistname)) {
System.out.println("该播放列表存在!");
System.out.println("该播放列表的名称为:"+playlistname);
System.out.println("该播放列表中所有的歌曲为:");
}
return null;
}
/**
* 方法24:显示所有播放列表名称
*/
public void disaplayPlayListName() {
Iterator<PlayList> it=playListMap.values().iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}package comm.imooc.player;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class TestDemo {
/**
* 方法:主菜单
*/
public 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 void playListMenu() {
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(" 8--导出歌曲");
System.out.println(" 9--返回上一层菜单");
System.out.println("****************************************");
System.out.println("请输入对应数字对播放列表进行管理:");
}
/**
* 方法:播放器菜单
*/
public void playerMenu() {
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("****************************************");
System.out.println("请输入对应数字对播放器进行管理:");
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Song song=new Song();//歌曲类对象
PlayList pl=new PlayList();//播放列表类对象
Map<String,PlayList> playListMap=new HashMap<String,PlayList>();//播放器类对象参数(播放器集合)
PlayListCollection plc=new PlayListCollection(playListMap);//播放器类对象
TestDemo test=new TestDemo();//测试类对象
PlayList playlist1=new PlayList("主播放列表",new ArrayList<Song>());//定义主播放列表实例对象
plc.playListMap.put("主播放列表", playlist1);//添加主播放列表实例对象
boolean b=true;
while(b) {
test.mainMenu();
int n=sc.nextInt();
Song song1;
switch(n) {
case 1:test.playListMenu();
while(b) {
int m=sc.nextInt();
switch(m) {
case 1:
System.out.println("将歌曲添加到主播放列表");
System.out.println("请输入要添加的歌曲数量:");
int k=sc.nextInt();
for(int i=0;i<k;i++) {
System.out.println("请输入第"+(i+1)+"首歌曲:");
System.out.println("请输入歌曲的id:");
String id=sc.next();
System.out.println("请输入歌曲的名称:");
String name=sc.next();
System.out.println("请输入歌曲的演唱者:");
String singer=sc.next();
song1=new Song(id,name,singer);
playlist1.addToPlayList(song1);
}
break;
case 2:
System.out.println("将歌曲添加到普通播放列表");
System.out.println("请输入要添加的播放列表名称:");
String playlistname=sc.next();
if(!(plc.getPlayListMap().containsKey(playlistname))) {
System.out.println("该播放列表不存在,请先将播放列表添加到播放器中");
}else if(playlistname.equals(plc.playListMap.get(playlistname).getPlayListName())){
System.out.println("请输入要添加的歌曲数量:");
int j=sc.nextInt();
for(int i=0;i<j;i++) {
System.out.println("请输入第"+(i+1)+"首歌曲:");
System.out.println("请输入歌曲的id:");
String id=sc.next();
boolean bl=true;
if(true) {
for(int a=0;a<playlist1.musicList.size();a++) {
if(id.equals(playlist1.musicList.get(a).getId())) {
plc.playListMap.get(playlistname).addToPlayList(playlist1.musicList.get(a));
bl=false;
break;
}
}
}
if(bl==false) {
bl=true;
continue;
}else {
bl=true;
}
System.out.println("该歌曲在主播放列表不存在,继续输入歌曲其他信息!");
System.out.println("请输入歌曲的名称:");
String name=sc.next();
System.out.println("请输入歌曲的演唱者:");
String singer=sc.next();
Song song2=new Song(id,name,singer);
plc.playListMap.get(playlistname).addToPlayList(song2);
playlist1.addToPlayList(song2);
}
System.out.println("主播放列表:");
System.out.println("播放列表中的所有歌曲为:");
for(int i=0;i<playlist1.musicList.size();i++) {
System.out.println(playlist1.musicList.get(i));
}
System.out.println("普通播放列表:");
System.out.println("播放列表中的所有歌曲为:");
for(int i=0;i<plc.playListMap.get(playlistname).musicList.size();i++) {
System.out.println(plc.playListMap.get(playlistname).musicList.get(i));
}
}
break;
case 3:
System.out.println("通过歌曲id查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
String playlistname2=sc.next();
if(playlistname2.equals(plc.playListMap.get(playlistname2).getPlayListName())) {
System.out.println("请输入要查询歌曲id:");
String id=sc.next();
boolean bl=false;
for(int a=0;a<plc.playListMap.get(playlistname2).musicList.size();a++) {
String idd=plc.playListMap.get(playlistname2).musicList.get(a).getId();
if(id.equals(idd)) {
System.out.println(plc.playListMap.get(playlistname2).searchSongById(idd));
bl=true;
break;
}
}
if(!bl) {
System.out.println("该歌曲在播放列表"+plc.playListMap.get(playlistname2).getPlayListName()+"中不存在!");
}
}break;
case 4:
System.out.println("通过歌曲名称查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
String playlistname3=sc.next();
if(playlistname3.equals(plc.playListMap.get(playlistname3).getPlayListName())) {
System.out.println("请输入要查询歌曲名称:");
String songname=sc.next();
boolean bl=false;
for(int a=0;a<plc.playListMap.get(playlistname3).musicList.size();a++) {
String songName=plc.playListMap.get(playlistname3).musicList.get(a).getName();
if(songname.equals(songName)) {
plc.playListMap.get(playlistname3).searchSongByName(songName);
bl=true;
break;
}
}
if(!bl) {
System.out.println("该歌曲在播放列表"+plc.playListMap.get(playlistname3).getPlayListName()+"中不存在!");
}
}break;
case 5:
System.out.println("修改播放列表中的歌曲");
System.out.println("请输入要修改的歌曲id:");
String id=sc.next();
pl.updateSong(pl.searchSongById(id));
break;
case 6:pl.deleteSong(song.getId());
break;
case 7:
System.out.println("显示所有播放列表中所有歌曲");
System.out.println("请输入要显示的播放列表名称:");
String plname=sc.next();
if(!(plc.getPlayListMap().containsKey(plname))) {
System.out.println("该播放列表不存在!");
}else if(plname.equals(plc.playListMap.get(plname).getPlayListName())) {
plc.playListMap.get(plname).disaplayAllSong();
}
break;
case 8:pl.exportPlayList();
break;
}
if(m==9) {
break;
}
test.playListMenu();
}break;
case 2:test.playerMenu();
while(b) {
int m=sc.nextInt();
switch(m) {
case 1:plc.addPlayList(pl);
break;
case 2:plc.deletePlayList(pl);
break;
case 3:plc.searchListByName(pl.getPlayListName());
break;
case 4:plc.disaplayPlayListName();
break;
}
if(m==9) {
break;
}
test.playerMenu();
}break;
case 0:
System.out.println("退出!");
b=false;
break;
}
}
}
}修改歌曲信息后,歌曲信息依然没有变。检查了下代码,觉得问题出在主方法中不应该用对象pl去调用方法,但不知道用哪个来代替pl,表示所有listMap中的所有list对象
30
收起
正在回答 回答被采纳积分+1
2回答
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星