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

Java错误:比较方法违反其一般约定,第1张

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!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5008888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存