通过name查询歌曲,无法查询出来,条件直接默认为NUll,跳转到else里面

通过name查询歌曲,无法查询出来,条件直接默认为NUll,跳转到else里面

正在回答

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

2回答

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

1)看一下musicList的长度是多少?  2)你在遍历musicList的同时,输出一个每一个歌曲的name,看看是什么,然后看一下是不是在这里return回去的。祝:学习愉快

  • Erpann 提问者 #1
    name都返回了,是不是equals 方法写错了 @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Song)) return false; Song song = (Song) o; return Objects.equals(getId(), song.getId()) && Objects.equals(getName(), song.getName()) && Objects.equals(getSinger(), song.getSinger()); } @Override public int hashCode() { return Objects.hash(getId(), getName(), getSinger()); }
    2019-11-04 12:16:11
  • Erpann 提问者 #2
    我调个格式,稍等
    2019-11-04 12:16:45
提问者 Erpann 2019-11-04 12:17:12
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Song)) return false;
    Song song = (Song) o;
    return Objects.equals(getId(), song.getId()) &&
            Objects.equals(getName(), song.getName()) &&
            Objects.equals(getSinger(), song.getSinger());
}

@Override
public int hashCode() {

    return Objects.hash(getId(), getName(), getSinger());
}


  • 提问者 Erpann #1
    根据id可以查出来,就根据name 出错, 在判断是否为null的时候直接判断为null,跳转到else 显示歌曲name不存在
    2019-11-04 12:18:54
  • 好帮手慕小班 回复 提问者 Erpann #2
    同学你好,1、song1.getName().equals(Name),是两个String类型的字符串比较,使用的是String类下的equals方法,而不是Song类下的equals方法。2、遍历musicList时,所有的name都返回了,那同学在searchSongByName方法中将musicList与传入参数Name都输出一下,看musicList和 传入参数 Name是否都包含"kau"这个内容。3、如果还是无法查询出来,建议同学将代码贴出,老师测试一下,注意不要贴在回复中,会失去代码格式,也不要贴代码截图,不便于老师复制运行。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-11-04 14:45:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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