主列表和普通列表的调用问题。

主列表和普通列表的调用问题。

1、在《播放列表》中添加普通列表在7选项中读出的“普通列表名”为NUll,主列表名可以读出。2、《播放器管理中》4选项只能读出-普通列表名,不能读出主列表。是哪里的问题?

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

import java.util.Set;


/**

 * 播放列表类

 * @author adm

 *

 */

public class PlayList {

//属性:播放列表名称(playListName):字符串类型;播放列表中的歌曲集合(musicList):List类型

private String playListName;

public List<Song> musicList = new ArrayList<Song>();

//无参构造方法

public PlayList() {

}

//有参构造方法

public PlayList(String playListName, List<Song> musicList) {

super();

this.playListName = playListName;

this.musicList = musicList;

}

public PlayList(String string) {

this.playListName = playListName;

}

//getter和setter方法

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;

}

Scanner sc = new Scanner(System.in);

PlayListCollection plCollection = new PlayListCollection();

//将歌曲添加到播放列表的方法

public void addToPlayList(Song song) {

System.out.println("请输入要添加的歌曲数量:");

int addSongTotal = sc.nextInt();

String songId = null;

String songName = null;

String songSinger = null;

for(int i = 0;i < addSongTotal;i++) {

System.out.println("请输入第"+(i+1)+"首歌曲!");

System.out.println("请输入歌曲的ID:");

songId = sc.next();

System.out.println("请输入歌曲的名称:");

songName = sc.next();

System.out.println("请输入歌曲的演唱者:");

songSinger = sc.next();

song = new Song(songId,songName,songSinger);

for(int j = 0;j < musicList.size();j++) {

if(song.getId().equals(musicList.get(j).getId())) {

System.out.println("该歌曲已经存在!");

return;

}

}

musicList.add(song);

}

System.out.println("歌曲添加成功!");

System.out.println(playListName);

for(Song s:musicList) {

System.out.println(s);

}

}

//显示播放列表中所有歌曲

public void displayAllSong() {

if(musicList.size() == 0) {

System.out.println("当前播放列表为空");

}else {

System.out.println(playListName);

for(int i=0;i<musicList.size();i++) {

System.out.println(musicList.get(i).toString());

}

}

}

//通过id查询歌曲

public Song searchSongById(String id) {

return null;

}

//通过名称查询歌曲

public Song searchSongByName(String name) {

return null;

}

//修改歌曲

public void updateSong(String id,Song song) {

}

//从播放列表删除歌曲

public void deleteSong(String id) {

}

//导出歌曲


public void exporPlayList() {

}

}




import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Scanner;

import java.util.Set;


/**

 * 播放器类

 * @author adm

 *

 */

public class PlayListCollection {

//属性:存放播放列表的集合(playListMap):Map

public Map<String,PlayList> playListMap =new HashMap<String,PlayList>();

//无参构造方法

public PlayListCollection() {

}

//有参构造方法

public PlayListCollection(Map<String, PlayList> playListMap) {

super();

this.playListMap = playListMap;

}


//getter 和setter方法

public Map<String, PlayList> getPlayListMap() {

return playListMap;

}


public void setPlayListMap(Map<String, PlayList> playListMap) {

this.playListMap = playListMap;

}

Scanner sc = new Scanner(System.in);

//添加播放列表

public void addPlayList(PlayList playList) {

String name = sc.next();

if(playListMap.containsKey(name) == true) {

System.out.println("该播放列表已存在!");

}else {

playListMap.put(name, playList);

}

System.out.println("添加成功!");

}

//删除播放列表

public void deletePlayList(PlayList playList) {

}

//通过名字查询

public PlayList searchPlayListByName(String playListName) {

PlayList playList=null;

    Set<String> playListSet=playListMap.keySet();

    for(String s:playListSet){

        if(s.equals(playListName)){

            playList=playListMap.get(s);

            System.out.println("查询的播放列表:"+s);

            break;

        }

     }

    return playList;

}

//显示所有播放列表名称

public void displayPlayListName() {

System.out.println("显示所有播放列表名称");

if(playListMap.size()==0) {

System.out.println("当前播放列表为空!");

}else {

Set<Entry<String,PlayList>> entrySet = playListMap.entrySet();

for(Entry<String,PlayList> entry:entrySet) {

System.out.println(entry.getKey());

}

}

}

}





import java.util.Iterator;

import java.util.Scanner;


import com.stone.playcollection.PlayList;

import com.stone.playcollection.PlayListCollection;

import com.stone.playcollection.Song;


/**

 * 播放器项目测试项

 * @author adm

 *

 */

public class TestDemo {

//主菜单选择显示项

public void showMainChoice() {

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 showPlayListChoice() {

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 showPlayListCollectionChoice() {

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

TestDemo td = new TestDemo();

Scanner sc = new Scanner(System.in);

Song song =new Song();

PlayList playList = new PlayList();

PlayList mainPlayList = new PlayList("主播放列表",playList.getMusicList());

PlayList numPlayList = new PlayList(null);

PlayListCollection plCollection = new PlayListCollection();

boolean flag = true;

while(flag) {

//外层循环

td.showMainChoice();

String str = sc.next();

switch(str) {

case "1":

//选项1内层循环

td.showPlayListChoice();

boolean flag1 = true;

while(flag1) {

try {

int n1 = sc.nextInt();

switch(n1) {

case 1:

System.out.println("将歌曲添加到主播放列表");

mainPlayList.addToPlayList(song);

break;

case 2:

System.out.println("将歌曲添加到普通列表");

System.out.println("请输入要添加的列表名称:");

String stringName;

stringName = sc.next();

if((plCollection.getPlayListMap()).containsKey(stringName) == true) {

//id和演唱者需要接收输入传进去,并且需要判断该id的歌曲是否在主播放列表存在

numPlayList.addToPlayList(null);

break;

}else {

System.out.println("该播放列表不存在,请先将播放列表添加到播放器当中");

}

break;

case 3:

System.out.println("通过歌曲id查询播放列表中的歌曲");

System.out.println("请输入歌曲Id");

String str1 = sc.next();

break;

case 4:

System.out.println("通过歌曲名称查询播放列表中的歌曲");

System.out.println("请输入歌曲名称:");

String str2 = sc.next();

break;

case 5:

System.out.println("修改播放列表中的歌曲");

break;

case 6:

System.out.println("删除播放列表中的歌曲");

                   System.out.println("请输入要删除的歌曲名称:");

                   String str3=sc.next();

                  

break;

case 7:

mainPlayList.displayAllSong();

break;

case 8:

System.out.println("歌单导出成功");

break;

case 9:

flag1 = false;

break;

default:

System.out.println("输入错误!请重新选择!");

}

}catch(java.util.InputMismatchException e) {

System.out.println("输入错误!请输入整数!");

return;//跳出当前循环

}

td.showPlayListChoice();

}

break;

case "2":

//选项2的内循环

td.showPlayListCollectionChoice();

boolean flag2 = true;

while(flag2) {

try {

int n2 = sc.nextInt();

switch(n2) {

case 1:

System.out.println("向播放器添加播放列表");

                System.out.println("输入要添加的播放列表名称:");

                plCollection.addPlayList(numPlayList);

break;

case 2:

System.out.println("从播放器删除播放列表");

                System.out.println("请输入要删除的播放列表名称:");

                plCollection.deletePlayList(numPlayList);

break;

case 3:

System.out.println("通过名字查询播放列表信息");

System.out.println("请输入要查询的播放列表名称:");

String playListName2 = sc.next();

for(Song song1:plCollection.searchPlayListByName(playListName2).musicList) {

System.out.println(song1);

}

break;

case 4:

System.out.println("显示所有播放列表名称");

System.out.println("播放列表名称为:");

plCollection.displayPlayListName();

break;

case 9:

flag2 = false;

break;

default:

System.out.println("输入错误!请重新选择!");

}

}catch(java.util.InputMismatchException e) {

System.out.println("输入错误!请输入整数!");

return;//跳出当前循环

}

td.showPlayListCollectionChoice();

}

break;

case "0":

System.exit(0);

System.out.println("退出成功!!");

break;

default:

System.out.println("输入错误!请重新选择!");

}

}

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1)选择“7--显示播放列表中个的所有歌曲”后,你调用的mainPlayList.displayAllSong();这是主列表名呀,没有显示普通列表numPlayList,你应该显示plCollection中的所有内容。2)plCollection中没有添加上主列表,你应该直接把主列表添加进去。祝:学习愉快

  • Stone_He 提问者 #1
    case 7: mainPlayList.displayAllSong(); numPlayList.displayAllSong(); break; 是这样吗?没有太明白?
    2018-09-10 18:54:06
  • 好帮手慕雪 回复 提问者 Stone_He #2
    像你那样写也行。正规的应该遍历plCollection,播放它内部的所有列表。主要是你没有把plCollection正确的添加上mainPlayList。plCollection要存放所有的播放列表
    2018-09-10 18:58:28
  • Stone_He 提问者 回复 好帮手慕雪 #3
    怎么plCollection正确的添加上mainPlayList?想了半天没有想明白
    2018-09-10 22:51:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师