我正在做一个摆动卡片游戏(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个型动物部分此功能在同一执行时间,并在同一时间接收到true
和false
。但我修改了我的代码,我认为这是不可能的。
有什么建议吗?谢谢
我想你需要发布一些相关的代码,比如你在哪里叫'board.canTakeCards(!cardTaken);'。 – NINCOMPOOP
您的代码不显示任何比较。你能给我们提供'canTakeCards'的内部细节吗?那里涉及哪些自定义对象? – Howard
你“有”的消息?谁给了你? IDE?编译器?运行?它是一个例外吗? –