老师帮忙看看代码对不对
package com.imooc.musicplayer;
public class Song {
private String id;// 歌曲ID
private String name;// 歌曲名称
private String singer;// 歌曲演唱者
// 构造方法
public Song() {
}
public Song(String id, String name, String singer) {
setId(id);
setName(name);
setSinger(singer);
}
// get、set方法
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和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.getClass() == this.getClass()) {
Song song = (Song) obj;
return (song.getId().equals(this.getId()))
&& (song.getName().equals(this.getName())
&& (song.getSinger().equals(this.getSinger())));
}
return false;
}
//toString方法
@Override
public String toString() {
return "歌曲信息:歌曲id为:" + id + ", 歌曲名称为:" + name + ",歌曲演唱者为:" + singer ;
}
}
package com.imooc.musicplayer;
import java.util.ArrayList;
import java.util.List;
public class PlayList {
private String playListName;//播放列表名称
public List<Song> musicPlayList;//播放列表存储的集合
//构造方法
public PlayList() {
}
public PlayList(String playListName) {
setPlayListName(playListName);
musicPlayList=new ArrayList<Song>();
}
//getset方法
public String getPlayListName() {
return playListName;
}
public void setPlayListName(String playListName) {
this.playListName = playListName;
}
public List<Song> getMusicPlayList() {
return musicPlayList;
}
public void setMusicPlayList(List<Song> musicPlayList) {
this.musicPlayList = musicPlayList;
}
/**
* 添加歌曲到播放列表的方法
* @param s Song类型对象
*/
public void addToPlayList(Song s) {
boolean flag=false;
for(Song song:musicPlayList) {
if(song.equals(s)) {
flag=true;
break;
}
}
if(flag) {
System.out.println("歌曲已存在,不需重复添加!");
}else {
musicPlayList.add(s);
}
}
/**
* 显示列表里所有歌曲信息
*/
public void displayAllSong() {
System.out.println(this.getPlayListName()+"列表里所有歌曲信息为:");
for(Song s:musicPlayList) {
System.out.println(s);
}
}
/**
* 通过Id查找歌曲
* @param id歌曲id
* @return Song类型对象
*/
public Song searchById(String id) {
Song s=null;
for(Song song:musicPlayList) {
if(song.getId().equals(id)) {
s=song;
break;
}
}
return s;
}
/**
* 通过名字查找歌曲
* @param name歌曲名字
* @return Song类型对象
*/
public Song searchByName(String name) {
Song s=null;
for(Song song:musicPlayList) {
if(song.getName().equals(name)) {
s=song;
break;
}
}
return s;
}
/**
* 修改歌曲信息
* @param id歌曲id
* @param song Song类型对象
*/
public void updateSong(String id,Song song) {
Song s=this.searchById(id);
if(s==null) {
System.out.println("id为"+id+"的歌曲不存在");
}else {
this.musicPlayList.remove(s);
this.musicPlayList.add(song);
System.out.println("修改成功!");
}
}
/**
* 删除歌曲
* @param id 歌曲id
*/
public void deleteSong(String id) {
Song s=this.searchById(id);
this.musicPlayList.remove(s);
System.out.println("删除成功!");
}
}
package com.imooc.musicplayer;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* 播放列表集合
* @author Administrator
*
*/
public class PlayListCollection {
Map<String,PlayList> playMap;//存放播放列表的集合<名字,PlayList对象>
public PlayListCollection() {
playMap=new HashMap<String,PlayList>();
}
public Map<String, PlayList> getPlayMap() {
return playMap;
}
public void setPlayMap(Map<String, PlayList> playMap) {
this.playMap = playMap;
}
/**
* 添加播放列表
*/
public void addPlayList(PlayList p) {
playMap.put(p.getPlayListName(), p);
}
/**
* 删除播放列表
*/
public void deletePlayList(PlayList p) {
playMap.remove(p.getPlayListName());
System.out.println("删除成功!");
}
/**
* 通过名字查找播放列表
* @param p 列表的对象
* @return 列表的对象
*/
public PlayList searchByName(String name) {
PlayList pl=null;
Set<String> playListSet=playMap.keySet();
for(String n:playListSet) {
if(n.equals(name)) {
pl=playMap.get(n);
break;
}
}
return pl;
}
/**
* 显示所有列表的名称
*/
public void displayListName() {
Set<String> nameSet=playMap.keySet();
System.out.println("所有的播放列表名称为:");
for(String n:nameSet) {
System.out.println(n);
}
}
}
package com.imooc.musicplayer;
import java.util.List;
import java.util.Scanner;
public class TestDemo {
public void testSong() {
Song s1 = new Song("s001", "两只老虎", "小太阳合唱团");
Song s2 = new Song("s002", "小燕子", "彩虹合唱团");
Song s3 = new Song("s003", "读书郎", "黑天鹅合唱团");
Song s4 = new Song("s003", "读书郎", "黑天鹅合唱团");
System.out.println(s1);
System.out.println("s1==s2?" + s1.equals(s2));
System.out.println("s3==s3?" + s3.equals(s3));
System.out.println("s3==s4?" + s3.equals(s4));
}
public void testPlayList() {
Song s1 = new Song("s001", "两只老虎", "小太阳合唱团");
Song s2 = new Song("s002", "小燕子", "彩虹合唱团");
Song s3 = new Song("s003", "读书郎", "黑天鹅合唱团");
Song s4 = new Song("s004", "读书郎", "黑天鹅合唱团");
// 创建PlayList对象
PlayList p = new PlayList("主播放器");
p.addToPlayList(s1);
p.addToPlayList(s2);
p.addToPlayList(s3);
p.addToPlayList(s4);
// 显示播放列表所有歌曲信息
p.displayAllSong();
// 通过id查找歌曲
System.out.println("通过id查找歌曲");
Song song1 = p.searchById("s001");
if (song1 == null) {
System.out.println("该歌曲不存在");
} else {
System.out.println(song1);
}
// 通过名字查找歌曲
System.out.println("通过名字查找歌曲");
Song song2 = p.searchByName("两只老虎");
if (song2 == null) {
System.out.println("该歌曲不存在");
} else {
System.out.println(song2);
}
// 修改歌曲信息
Song s = new Song("s004", "蜗牛与黄鹂鸟", "水木年华组合");
p.updateSong("s004", s);
p.displayAllSong();
// 删除歌曲
p.deleteSong("s001");
p.displayAllSong();
}
public void testPlayListCollection() {
PlayListCollection plc = new PlayListCollection();
Song s1 = new Song("s001", "两只老虎", "小太阳合唱团");
Song s2 = new Song("s002", "小燕子", "彩虹合唱团");
Song s3 = new Song("s003", "读书郎", "黑天鹅合唱团");
Song s4 = new Song("s004", "读书郎", "黑天鹅合唱团");
// 创建PlayList对象
PlayList p = new PlayList("主播放器");
p.addToPlayList(s1);
p.addToPlayList(s2);
p.addToPlayList(s3);
p.addToPlayList(s4);
// 创建PlayList对象
PlayList p1 = new PlayList("最喜欢的歌曲");
p1.addToPlayList(p.getMusicPlayList().get(0));
p1.addToPlayList(p.getMusicPlayList().get(1));
// 添加进集合
plc.addPlayList(p);
plc.addPlayList(p1);
System.out.println("显示所有列表名称:");
p.displayAllSong();
p1.displayAllSong();
plc.displayListName();
plc.deletePlayList(p1);
System.out.println("显示所有列表名称:");
plc.displayListName();
System.out.println(plc.searchByName("主播放器").getPlayListName());
}
// 主菜单
public void mainMenu() {
System.out.println("*******************************************");
System.out.println(" **主菜单**");
System.out.println(" 1——播放列表管理");
System.out.println(" 2——播放器管理");
System.out.println(" 0——退出");
System.out.println("*******************************************");
}
// 播放列表管理菜单
public void playListMenu() {
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(" 9——返回上一级菜单");
System.out.println("*******************************************");
}
// 播放器菜单
public void playerMenu() {
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() {
Scanner sc = new Scanner(System.in);
PlayList mainPlay = new PlayList("mainPlayer");
PlayListCollection plc=new PlayListCollection();
plc.addPlayList(mainPlay);
PlayList newPlayList;
while (true) {
this.mainMenu();
System.out.println("请输入数字:");
try {
int n = sc.nextInt();
if (n == 0) {
System.out.println("结束程序!");
break;
} else if (n == 1) {
while (true) {
this.playListMenu();
System.out.println("请输入数字:");
int no = sc.nextInt();
if (no == 9) {
System.out.println("返回上一级菜单");
break;
}
switch (no) {
case 1:
System.out.println("将歌曲添加到主播放列表");
System.out.println("要添加到主播放列表的歌曲数量:");
int num = sc.nextInt();
for (int i = 1; i <= num; 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 s = new Song(id, name, singer);
mainPlay.addToPlayList(s);
}
System.out.println("添加成功");
break;
case 2:
System.out.println("将歌曲添加到普通播放列表");
System.out.println("请输入要添加进的播放列表名称:");
String name=sc.next();
newPlayList=plc.searchByName(name);
if(newPlayList==null) {
System.out.println("请先添加播放列表");
}else {
System.out.println("请输入要添加的歌曲的名称:");
String strName=sc.next();
Song song=newPlayList.searchByName(strName);
if(song==null) {
System.out.println("主播放器中没有该歌曲,请输入歌曲的详细信息:");
System.out.println("该歌曲的id为:");
String strId=sc.next();
System.out.println("该歌曲的演唱者为:");
String strSinger=sc.next();
Song s=new Song(strId,strName,strSinger);
mainPlay.addToPlayList(s);
newPlayList.addToPlayList(s);
System.out.println("添加成功");
}else {
newPlayList.addToPlayList(song);
if(newPlayList.searchByName(strName)==null) {
System.out.println("添加成功");
}
}
}
break;
case 3:
System.out.println("通过歌曲id查询播放列表中的歌曲");
System.out.println("请输入要查询的列表名称:");
String pn=sc.next();
PlayList pla=plc.searchByName(pn);
if(pla==null) {
System.out.println("该列表不存在,请先添加列表");
break;
}else {
System.out.println("请输入要查询的id:");
String id=sc.next();
Song s=pla.searchById(id);
if(s==null) {
System.out.println("id为"+id+"的歌曲在名为"+pn+"的播放列表中不存在");
break;
}else {
System.out.println("找到了");
System.out.println(s);
}
}
break;
case 4:
System.out.println("通过歌曲名称查询播放列表中的歌曲");
System.out.println("请输入要查询的列表名称:");
String pln=sc.next();
PlayList ply=plc.searchByName(pln);
if(ply==null) {
System.out.println("该列表不存在,请先添加列表");
break;
}else {
System.out.println("请输入要查询的歌曲名称:");
String sn=sc.next();
Song s=ply.searchByName(sn);
if(s==null) {
System.out.println("名称为"+sn+"的歌曲在名为"+pln+"的播放列表中不存在");
break;
}else {
System.out.println("找到了");
System.out.println(s);
}
}
break;
case 5:
System.out.println("修改播放列表中的歌曲");
System.out.println("请输入要修改的列表名称:");
String playn=sc.next();
PlayList plyl=plc.searchByName(playn);
if(plyl==null) {
System.out.println("该列表不存在,请先添加列表");
break;
}else {
System.out.println("请输入要修改的歌曲id:");
String sId=sc.next();
Song so=plyl.searchById(sId);
if(so==null) {
System.out.println("该歌曲不存在,请重新输入");
break;
}else {
System.out.println("请输入修改歌曲的详细信息:");
System.out.println("请输入歌曲id:");
String newId=sc.next();
System.out.println("请输入歌曲名称:");
String newName=sc.next();
System.out.println("请输入歌曲演唱者:");
String newSinger=sc.next();
Song newSong=new Song(newId,newName,newSinger);
if(plyl.equals(mainPlay)) {
plyl.updateSong(sId, newSong);
}else {
plyl.updateSong(sId, newSong);
mainPlay.updateSong(sId, newSong);
}
}
}
break;
case 6:
System.out.println("删除播放列表中的歌曲");
System.out.println("请输入要删除的歌曲所在列表名称:");
String plin=sc.next();
PlayList pliy=plc.searchByName(plin);
if(pliy==null) {
System.out.println("该列表不存在,请先添加列表");
break;
}else {
System.out.println("请输入要删除歌曲的id:");
String deleId=sc.next();
Song deleSong=pliy.searchById(deleId);
if(deleSong==null) {
System.out.println("该歌曲不存在,请重新输入");
break;
}else {
pliy.deleteSong(deleId);
}
}
break;
case 7:
System.out.println("显示播放列表中的所有歌曲");
System.out.println("请输入要删除的歌曲所在列表名称:");
String plisn=sc.next();
PlayList plisy=plc.searchByName(plisn);
if(plisy==null) {
System.out.println("该列表不存在,请先添加列表");
break;
}else {
plisy.displayAllSong();
}
break;
default:
System.out.println("没有该数字对应的操作");
break;
}
}
} else if (n == 2) {
while(true) {
this.playerMenu();
System.out.println("请输入数字:");
int nu = sc.nextInt();
if (nu == 9) {
System.out.println("返回上一级菜单");
break;
}
switch (nu) {
case 1:
System.out.println("向播放器添加播放列表");
System.out.println("请输入播放列表的名称:");
String name=sc.next();
newPlayList=new PlayList(name);
plc.addPlayList(newPlayList);
System.out.println("添加成功");
break;
case 2:
System.out.println("从播放器删除播放列表");
System.out.println("请输入要删除列表的名字:");
String cpn=sc.next();
PlayList pl1=plc.searchByName(cpn);
if(pl1==null) {
System.out.println("该列表不存在,请重新输入");
break;
}else {
plc.deletePlayList(pl1);
System.out.println("删除成功");
}
break;
case 3:
System.out.println("通过名字查询播放列表信息");
System.out.println("请输入要查询列表的名字:");
String pcn=sc.next();
PlayList pl2=plc.searchByName(pcn);
if(pl2==null) {
System.out.println("该列表不存在,请重新输入");
break;
}else {
System.out.println("删除成功");
plc.getPlayMap().get(pcn).displayAllSong();
}
break;
case 4:
System.out.println("显示所有播放列表名称");
plc.displayListName();
break;
default:
System.out.println("没有该数字对应的操作");
break;
}
}
} else {
System.out.println("输入的数字有误,请重新输入");
}
} catch (java.util.InputMismatchException e) {
String s = sc.next();
System.out.println("输入的不是整数型数字,请重新输入");
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo td = new TestDemo();
// td.testSong();
// td.testPlayList();
// td.testPlayListCollection();
td.test();
}
}我在设置主播放列表名字时,如果用中文,写主流程的searchById的方法时发现有时候就找不到播放列表,排查好几遍,把几个没注意到的错误都排查出来了,就没找到哪里错,后来我把主播放列表名字用英文,一切都正常了,这个问题到底是怎么回事呢?
6
收起
正在回答
2回答
同学你好,
1、同学所说是正确的哦~很抱歉这个细节我之前没有注意到呢~
2、发生这种情况的原因,可能是因为同学再次输入的中文,eclipse不能很好的去接收,如果输入英文可以的话,就不用纠结这个了,在之后的课程中,搭建web项目,会从前端传值,就不会发生这种情况了~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星