1

我在摇摆中做纸牌游戏(java)

用户必须等待轮到他,拿一张卡,然后按确认。轮不到他的时候,他不能拿任何牌。

它以这种方式开始:

this.cardTaken = false;
board.canTakeCards(!cardTaken);

然后在董事会课程中,下一个动作是:

public void canTakeCards(boolean can) {
        if (can) {
            this.btnConfirm.setEnabled(false);
            this.pnlCards.setCanTake(true);

        } else {
            this.btnConfirm.setEnabled(true);
            this.pnlCards.setCanTake(false);
        }

else当用户拿卡时发生)。

所以。我得到了Comparison method violates its general contract在线board.canTakeCards(!cardTaken);

这只发生了一次,我“测试”了我的游戏大约 8 次。我真的很困惑和害怕这个。

我的一个理论是,我在同一执行时间从代码的 2 个不同部分调用此函数,并且它同时接收 atruefalse。但是我修改了我的代码,我认为这是不可能的。

有什么建议吗?谢谢

4

1 回答 1

4

此消息文本包含在 Java 7 排序集合引发的异常中,表明所讨论的对象具有不一致的实现compareTo,这基本上意味着它没有对对象强加总排序。在 Java 7 之前,这被默默地忽略了。修改你的Comparable课程。

于 2013-05-29T11:44:24.483 回答