栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java错误:比较方法违反其一般约定

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java错误:比较方法违反其一般约定

异常消息实际上是描述性的。这里所指的合同是传递:如果

A > B
B > C
那么对于任意的
A,B和C:A > C
。我用纸和铅笔检查了一下,你的代码似乎有几个孔:

if (card1.getRarity() < card2.getRarity()) {  return 1;

-1
如果你不返回
card1.getRarity() > card2.getRarity()

if (card1.getId() == card2.getId()) {  //...}return -1;

-1
如果id不相等,则返回。你应该返回-1或1根据哪个ID更大。

看看这个。除了更具可读性之外,我认为它实际上应该可以工作:

if (card1.getSet() > card2.getSet()) {    return 1;}if (card1.getSet() < card2.getSet()) {    return -1;};if (card1.getRarity() < card2.getRarity()) {    return 1;}if (card1.getRarity() > card2.getRarity()) {    return -1;}if (card1.getId() > card2.getId()) {    return 1;}if (card1.getId() < card2.getId()) {    return -1;}return cardType - item.getCardType();  //watch out for overflow!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号