나는 스윙에서 카드 게임을하고있다. (자바)비교 방법은 일반 계약을 위반합니다. 간단한 비교
사용자는 자신의 차례를 기다린 후 카드를 받고 확인을 누른다. 자신의 차례가 아니라면 카드를 가져갈 수 없습니다.
이 이런 식으로 시작합니다
는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
발생).
So. 나는 Comparison method violates its general contract
의 라인을 가지고있다 board.canTakeCards(!cardTaken);
그것은 단지 한 번 일어 났고 약 8 시간 동안 나의 게임을 "테스트"했다. 나는 이것에 대해 정말로 혼란스럽고 두려워합니다.
내 이론 중 하나는 동일한 실행 시간에 코드의 2 개의 다른 부분에서이 함수를 호출하고 동시에 true
과 false
을 받는다는 것입니다. 하지만 내 코드를 개정하고 그것이 불가능하다고 생각합니다.
어떤 조언이 필요합니까? 감사합니다
'board.canTakeCards (! cardTaken);'와 같이 관련 코드를 게시해야한다고 생각합니다. – NINCOMPOOP
코드에 비교가 표시되지 않습니다. 'canTakeCards'의 내부 세부 사항을 알려주시겠습니까? 거기에 어떤 사용자 지정 개체가 관련되어 있습니까? – Howard
메시지를 받았습니까? 누가 너에게 줬어? IDE? 컴파일러? 실행 시간? 예외입니까? –