测试“将歌曲添加到播放列表方法”时,总提示空指针异常?求解答!
package com.yang.musicmanagertest; public class Song { // 属性 private String id; private String name; private String singer; // 构造方法 public Song() { } public Song(String id, String name, String singer) { this.id = id; this.name = name; this.singer = singer; } // getter setter方法 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 and 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) || (obj.getClass() != this.getClass())) return false; Song song=(Song) obj; if(song.id==this.id && song.name==this.name && song.singer==this.singer) return true; else return false; } // toString方法 @Override public String toString() { return " 歌曲id:" + id + ", 歌名:" + name + ", 演唱者:" + singer; } }
package com.yang.musicmanagertest;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PlayList {
// 属性
private String playListName;
private ArrayList<Song> musicList =null;
// 构造方法
public PlayList() {
}
public PlayList(String playListName, ArrayList<Song> musicList) {
super();
this.playListName = playListName;
this.musicList = musicList;
}
// getter setter方法
public String getPlayListName() {
return playListName;
}
public void setPlayListName(String playListName) {
this.playListName = playListName;
}
public List<Song> getMusicList() {
return musicList;
}
public void setMusicList(ArrayList<Song> musicList) {
this.musicList = musicList;
}
// 将歌曲添加到播放列表方法
public void addToPlayList(Song song) {
System.out.println("请输入要添加歌曲的数量");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;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();
song=new Song(id,name,singer);
this.musicList.add(i,song);
}
sc.close();
}
// 显示播放器列表中所有歌曲方法
public void displayAllSong(List<Song> musicList) {
for (int i = 0; i < musicList.size(); i++) {
System.out.println(musicList.get(i));
}
}
// 通过id查询歌曲
public Song searchSongById(String id) {
Song song = null;
for (int i = 0; i < musicList.size(); i++) {
if (((Song) (musicList.get(i))).getId() == id) {
song = (Song) (musicList.get(i));
break;
} else
System.out.println("没有查询到歌曲信息。");
}
return song;
}
// 通过歌名查询歌曲
}
package com.yang.musicmanagertest;
import java.util.ArrayList;
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
// 创建对象
Song song = null;
PlayList pl = null;
TestDemo td=new TestDemo();
//显示主菜单
td.mainMenu();
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch (num) {
case 0:
sc.close();
break;
case 1:
td.playListManagerMenu();
int num1=sc.nextInt();
switch(num1) {
case 1:
ArrayList<Song> musicList=null;
pl=new PlayList("主播放列表", musicList);
pl.addToPlayList(song);
}
}
}
// 主菜单
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 playListManagerMenu() {
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("请输入对应的数字对播放列表进行管理:");
}
}
正在回答
在pl.addToPlayList(song);时会执行到musicList.add(i,song);musicList这时还为空了吧?你还没有实例化PlayList呢。pl=new PlayList("主播放列表", musicList);之前musicList为空。祝:学习愉快
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星