无法从键盘中输入数据存储到主播放列表中

来源: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回答

好帮手慕珊

2020-02-17

同学,你好!添加歌曲的方法存在问题,如下图所示,选中的代码应该写到循环外。否则第一次执行for循环的时候因为musicList中没有数据,所以循环一次也不执行,也就没有执行添加歌曲的代码,这样的话添加歌曲的代码根本执行不到。

http://img.mukewang.com/climg/5e49fec809ea446508420996.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

MAYxDAY

提问者

2020-02-16

出现这种状况http://img.mukewang.com/climg/5e492bff091a213007370873.jpg

0

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;

}


}



0

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);

}

}

}


0

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();

}


}


}


0

0 学习 · 11489 问题

查看课程