我正在做一個擺動卡片遊戲(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?編譯器?運行?它是一個例外嗎? –