添加歌曲之后再用display发现musicList为空这是为什么

添加歌曲之后再用display发现musicList为空这是为什么

package com.gf.player;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class PlayList {
private String playListName;
 List<Song>  musicList=new ArrayList<Song>();

public PlayList(String playListName){
 this.setPlayListName(playListName);
}
public PlayList(){
 
}
public String getPlayListName() {
 return playListName;
}
public void setPlayListName(String playListName) {
 this.playListName = playListName;
}

//将歌曲添加到播放列表
public void addToPlayList(){
 
     Scanner sc=new Scanner(System.in);
 System.out.println("将歌曲添加到主播放列表");
 System.out.println("请输入要添加的歌曲的数量:");
 int a=sc.nextInt();
 for(int i=1;i<a+1;i++){
  System.out.println("请输入第"+i+"首歌曲:");
  System.out.println("请输入歌曲的id:");
     String Id=sc.next();
  System.out.println("请输入歌曲的名称:");
  String Name=sc.next();
  System.out.println("请输入演唱者:");
  String Singer=sc.next();
  Song song=new Song(Id,Name,Singer);
  musicList.add(song);
  
}
}
public void displaySong(){
  for(int i=0;i<musicList.size();i++){
   System.out.print(((Song)(musicList.get(i))).getName());
   }
}
//显示播放列表中所有歌曲
public void displayAllSong(){
// for(int i=0;i<musicList.size();i++){
  System.out.println(musicList);
// }
}
//通过id查询歌曲
public Song searchSongById(String id){
 Song s = null;
for(int i=0;i<musicList.size();i++){
 if(id.equals(musicList.get(i).getId())){
  s=musicList.get(i);
  break;
 }
}
if(s==null){
 System.out.println("该歌曲不存在");
}
 return s;
}
//通过名字查询歌曲
public Song searchSongByName(String n){
return null;
}
//修改歌曲
public void updateSong(Song song){
 
}

//删除歌曲
public boolean deleteSong(String id){
 Song song = null;
 boolean flag=false;
 for(Song temp:musicList){
  if(temp.getId().equals(id)){
 song=temp;
 flag=true;
 break;
 }
 }
 if(flag){
  musicList.remove(song);
 return true;
 }
 return false;
}
//导出歌单
public void exportPlayList(){
 
}
}


正在回答 回答被采纳积分+1

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

2回答
提问者 高木风先森 2017-03-09 11:05:21
 public void playListMenu(){
  PlayListCollection play=new PlayListCollection();
 PlayList playList=new PlayList();
  while(true){
  
  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("****************************");
   Scanner s=new Scanner(System.in);
   int n=s.nextInt();
          switch(n){
    case 1:
    System.out.println("将歌曲添加带主播放列表");
  PlayList a1=new PlayList();//主播放列表对象
       a1.addToPlayList();
    break;
    case 2:
   System.out.println("将歌曲添加带普通播放列表");
   System.out.println("要添加的播放列表名称");
 String ordinaryPlayList=s.next();
  playList.addToPlayList();
   break;
   
    case 3:  
     System.out.println("通过歌曲id查询播放列表中的歌曲");
     System.out.println("请输入要查询的播放列表名称");
   String ids=s.next();
     System.out.println(playList.searchSongById(ids));
     break;

          }
          }
  }


  • PlayList a1=new PlayList();//主播放列表对象 把这条语句,也就是主播放列表对象的定义放到循环外面,如果放循环里面,每次循环都创建一个新的对象,所以显示数据时就没有数据了。
    2017-03-09 14:26:02
好帮手慕珊 2017-03-09 10:58:06

你好!我在主方法中直接写下面三行代码,是可以输出歌曲信息的。

PlayList pl=new PlayList("普通歌曲类表");

pl.addToPlayList();

pl.displayAllSong();

怀疑是你在调用方法的时候有问题,可以贴一下调用方法的代码,祝学习愉快!

  • 提问者 高木风先森 #1
     public void playListMenu(){   PlayListCollection play=new PlayListCollection();  PlayList playList=new PlayList();   while(true){      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("****************************");    Scanner s=new Scanner(System.in);    int n=s.nextInt();           switch(n){     case 1:     System.out.println("将歌曲添加带主播放列表");   PlayList a1=new PlayList();//主播放列表对象        a1.addToPlayList();     break;     case 2:    System.out.println("将歌曲添加带普通播放列表");    System.out.println("要添加的播放列表名称");  String ordinaryPlayList=s.next();   playList.addToPlayList();    break;        case 3:        System.out.println("通过歌曲id查询播放列表中的歌曲");      System.out.println("请输入要查询的播放列表名称");    String ids=s.next();      System.out.println(playList.searchSongById(ids));      break;           }           }   }
    2017-03-09 11:06:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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