为什么总是提示错误

为什么总是提示错误

麻烦老师帮我看一下为什么p1.addToPlayList(song1);这句没办法正常执行,调试提示说:musicList error,见最下面图

Song.java

package imooc.com.player;


//Song类

public class Song{

private String id, name, singer;//属性:歌曲id、歌曲名、演唱者

public Song(String id, String name, String singer) {

this.setId(id);

this.setName(name);

this.setSinger(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 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(obj==this) {

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;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return "歌曲ID为:"+this.getId()+",歌曲名字为:"+this.getName()+",歌唱者为:"+this.getSinger()+" ";

}

}


PlayList.java

package imooc.com.player;


import java.util.ArrayList;

import java.util.Collections;

import java.util.List;


//播放列表

public class PlayList {

private String playListName;// 播放列表名称

private List<Song> musicList;// 播放列表中的歌曲集合


// 构造方法

public PlayList(String playListName) {

this.setPlayListName(playListName);

this.musicList = new ArrayList<Song>();

}


// getter、setter

public String getPlayListName() {

return playListName;

}


public void setPlayListName(String playListName) {

this.playListName = playListName;

}


// 将歌曲添加到播放列表

public void addToPlayList(Song song) {

boolean flag = false;


for (Song song1:musicList) {

if (song1.equals(song)) {

flag = true;

System.out.println("啦啦啦啦啦");

break;

}

if(flag) {

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

}else {

musicList.add(song);

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

}

}

}


// 显示播放类别中所有歌曲

public void displayAllSong() {

System.out.println("列表中所有歌曲如下:");

for(Song song:this.musicList) {

System.out.println("123"+song);

}

}

// 通过ID查询歌曲

public Song searchSongById(String id) {

Song song=null;

for(Song song1:musicList) {

if(song1.getId().equals(id))

{

song=song1;

break;

}

}

return song;

}

//通过名称查询歌曲

public Song searchSongByName(String name) {

Song song=null;

for(Song song1:musicList) {

if(song1.getName().equals(name)) {

song=song1;

break;

}

}

return song;

}

//修改歌曲:将歌曲ID为id的歌修改为song

public void updateSong(String id, Song song) {

boolean flag=false;

for(Song song1:musicList) {

if(song1.getId().equals(id)) {

song1=song;

flag=true;

break;

}

if(flag){

System.out.println("修改成功!");

}else 

System.out.println("要修改的歌曲id不存在!");

}

}

//从播放列表删除歌曲

public void deleteSong(String id) {

boolean flag=false;

for(Song song1:musicList) {

if(song1.getId().equals(id)) {

musicList.remove(song1);

flag=true;

break;

}

if(flag){

System.out.println("删除成功!");

}else 

System.out.println("要删除的歌曲id不存在!");

}

}

//按歌曲名进行排序

public void sortBySongName() {

System.out.println("排序前:");

displayAllSong();

Collections.sort(musicList, new SongComparator());

System.out.println("排序后:");

displayAllSong();

}

}


TestClass.java

package imooc.com.player;


public class TestClass {

public void testSong() {

Song song1=new Song("s001","小太阳","小金人");

Song song2=new Song("s002","小月亮","小引人");

Song song3=new Song("s003","小地球","小铜人");

// Song song4=new Song("s003","小地球","小铜人");

// System.out.println(song4);

}

public void testPlayList() {

Song song1=new Song("s001","小太阳","小金人");

Song song2=new Song("s002","小月亮","小引人");

Song song3=new Song("s003","小地球","小铜人");

PlayList p1=new PlayList("播放列表1");

p1.addToPlayList(song1);

}

public static void main(String[] args) {

TestClass t=new TestClass();

t.testPlayList();

}

}

提示错误:

http://img1.sycdn.imooc.com//climg/5d0ba1d70001817230002000.jpg


正在回答

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

5回答

同学你好,当musicList集合中没有元素时,进入不了for循环,所以,应该在循环结束后,对flag的值进行判断。

将if-else语句移至for循环之外。

http://img1.sycdn.imooc.com//climg/5d0caaa40001b79806270725.jpg

其次,老师们会依据同学们提问的顺序一一进行调试、解答,所以参与学习的童鞋较多时,回复时间会有一定延迟。但是只要在问答区进行问题的有效描述,并贴好相关的代码和错误提示,老师一定会为大家解决问题哒!而且节假日也会有老师们值班帮助问题解答呦!加油加油!!

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

  • qq_心晴_29 提问者 #1
    谢谢,我一直以为是软件装的有问题,没想是代码的问题,谢谢
    2019-06-21 18:14:19
吃吃吃鱼的猫 2019-06-21 17:27:29

同学你好,问一下同学是不是用了debug的模式呢?如果是的话,同学使用下图标识按钮直接运行测试一下。

http://img1.sycdn.imooc.com//climg/5d0ca04d0001f20512930732.jpg


如果时间实在来不及的话,也可以在下一个阶段贴出作业中的问题,老师也会帮助同学解答的~

不过还是建议同学尽快在服务到期之前上交作业,因为在其他的阶段中无法提交除了本阶段之外的作业了呢~

同时提交作业后,就算服务到期,同学也可以查看作业批复哦~

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

  • 提问者 qq_心晴_29 #1
    运行,控制台什么都不显示,理论上来讲对执行addToPlayList这个方法,但是进入这个方法后,执行完for (Song song1:musicList) {,就直接结束了,并不执行中间部分,不知道是什么原因
    2019-06-21 17:33:27
提问者 qq_心晴_29 2019-06-21 17:15:16

有没有助教回答一下我的问题,万分感谢

提问者 qq_心晴_29 2019-06-21 13:12:38

http://img1.sycdn.imooc.com//climg/5d0c672e0001645113781314.jpg

显示是这样的,怎么办,教学服务快到期了,作业还没做完(꒦_꒦) 

好帮手慕珊 2019-06-21 10:54:33

你好!你的代码在我的电脑上运行,并没有报这个错误,你的jdk是什么版本?祝学习愉快!

  • 提问者 qq_心晴_29 #1
    我用的是11的,11的不支持吗?
    2019-06-21 11:15:26
  • 提问者 qq_心晴_29 #2
    你的JDK是哪个版本呢?
    2019-06-21 15:53:59
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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