无法从键盘中输入数据存储到主播放列表中
来源:4-7 自由编程
MAYxDAY
2020-02-16 19:44:56
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(" 8--将歌单导出"); 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; case 8: System.out.println("将文件导出"); System.out.println("请输入要导出的歌单名字:"); String listName=sc.next(); PlayList pl7=plc.searchPlayListByName(listName); if(pl7==null) { System.out.println("你要导出的歌单不存在!"); break; }else{ pl7.exportList(listName); } 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(); } }
5回答
同学,你好!添加歌曲的方法存在问题,如下图所示,选中的代码应该写到循环外。否则第一次执行for循环的时候因为musicList中没有数据,所以循环一次也不执行,也就没有执行添加歌曲的代码,这样的话添加歌曲的代码根本执行不到。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
MAYxDAY
提问者
2020-02-16
出现这种状况
MAYxDAY
提问者
2020-02-16
package com.imooc.player1;
public class Song {
private String 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 String toString() {
return "歌曲信息:歌曲ID:" + id + "歌曲名字:" + name + "歌手名字:" + 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;
}
}
MAYxDAY
提问者
2020-02-16
package com.imooc.player1;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class PlayListCollection {
Map<String,PlayList> playListMap;
public PlayListCollection() {
playListMap=new HashMap<String,PlayList>();
}
public Map<String, PlayList> getPlayListMap() {
return playListMap;
}
public void setPlayListMap(Map<String, PlayList> playListMap) {
this.playListMap = playListMap;
}
//添加播放列表
public void addPlayList(PlayList playList) {
playListMap.put(playList.getPlayListName(),playList);
}
//通过名字查询列表
public PlayList searchPlayListByName(String name) {
PlayList playlist=null;
Set<String> nameSet=playListMap.keySet();
for(String s:nameSet) {
if(s.equals(name)) {
playlist=playListMap.get(s);
break;
}else {
System.out.println("没找到该列表名的播放列表");
}
}
return playlist;
}
//删除播放列表
public void deletePlayList(PlayList playList) {
playListMap.remove(playList.getPlayListName());
}
//显示所有列表
public void disPlayListName() {
Set<String> nameSet=playListMap.keySet();
for(String s:nameSet) {
System.out.println(s);
}
}
}
MAYxDAY
提问者
2020-02-16
package com.imooc.player1;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class PlayList implements Serializable {
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;
}
public void addToPlayList(Song song) {
boolean flag = false;
for (Song song1 : musicList) {
if (song.equals(song1)) {
flag = true;
break;
}
if (flag) {
System.out.println("歌曲已存在!");
} else {
musicList.add(song);
}
}
}
//显示列表中所有歌曲
public void displayAllSong() {
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;
} else {
System.out.println("歌曲列表中没有该歌曲id的歌曲!");
}
}
return song;
}
//通过歌曲名字查询歌曲
public Song searchSongByIName(String name) {
Song song = null;
for (Song song1 : musicList) {
if (song1.getId().equals(name)) {
song = song1;
break;
} else {
System.out.println("歌曲列表中没有该歌曲名字的歌曲!");
}
}
return song;
}
//修改歌曲
public void updateSong(String id, Song song) {
for (Song song1 : musicList) {
if (song1.getId().equals(id)) {
musicList.remove(song1);
musicList.add(song);
break;
} else {
System.out.println("没有找到要修改的该id的歌曲!");
}
}
}
//删除歌曲
public void deleteSong(String id) {
for (Song song : musicList) {
if (song.getId().equals(id)) {
musicList.remove(song);
break;
} else {
System.out.println("没有找到要删除的该id的歌曲!");
}
}
}
public void exportList(String playListName ) {
File file=new File(playListName+".txt");
if(!file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try
{
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
for (Song song : musicList) {
oos.writeObject(song);
oos.flush();
}
System.out.println("导出成功");
fos.close();
oos.close();
}catch(
FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}catch(
IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相似问题