2013-05-29 1 views
1

Je fais un jeu de cartes en balançoire (java)La méthode de comparaison enfreint son contrat général. Simple comparaison

L'utilisateur doit attendre son tour, prendre une carte et appuyer sur confirmer. Quand ce n'est pas son tour, il ne peut prendre aucune carte.

Il commence ainsi:

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

Puis, en classe bord, il vient l'action suivante:

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

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

(le else se produit lorsque l'utilisateur prend une carte).

Donc. J'ai obtenu le à la ligne board.canTakeCards(!cardTaken);

Cela ne s'est produit qu'une seule fois et j'ai "testé" mon jeu pendant environ 8 fois. Je suis vraiment confus et j'ai peur de ça. Une de mes théories est que j'appelle cette fonction de 2 parties différentes du code à la même heure d'exécution, et il reçoit un true et false en même temps. Mais j'ai révisé mon code et je pense que c'est impossible.

Un conseil? Merci

+0

Je suppose que vous avez besoin de poster du code pertinent comme où appelez-vous 'board.canTakeCards (! CardTaken);'. – NINCOMPOOP

+0

Votre code affiche aucune comparaison. Pouvez-vous nous donner les détails intérieurs de 'canTakeCards'? Quels objets personnalisés sont impliqués ici? – Howard

+2

Vous avez "reçu" le message? Qui vous l'a donné? IDE? Compilateur? Runtime? Est-ce une exception? –

Répondre

3

Ce texte de message est inclus dans une exception générée à partir des collections triées Java 7, indiquant que l'objet en question a une implémentation incohérente de compareTo, ce qui signifie qu'il n'impose pas d'ordre total aux objets. Avant Java 7, cela a été ignoré silencieusement. Modifiez vos classes Comparable.

+0

Ce ne sont que des simples booléens. Je ne sais pas ce que tu essaies de me dire. Je n'ai pas de classe comparable dans tout mon jeu. Désolé pour mes connaissances de débutant. – auron344

+0

Après avoir soigneusement lu votre question, j'ai conclu que vous obtenez cette erreur à l'exécution, ce qui signifie qu'il s'agit d'une exception. Il doit y avoir un code impliqué qui jette l'exception, alors. Il est impossible de l'obtenir avec juste le code que vous avez posté. –

+0

Oui, j'ai eu cette erreur à l'exécution. Désolé si je n'ai pas mentionné cela. (toujours noob). A propos de poster plus de code ... j'ai des milliers et des milliers de lignes et je ne peux pas atm (mes noms de fonctions et de variables sont en catalan, donc je dois les traduire pour le rendre plus clair pour vous les gars). De toute façon, est-ce possible que cela arrive ce que j'ai mentionné auparavant? ** Une de mes théories est que j'appelle cette fonction de 2 parties différentes du code à la même heure d'exécution, et qu'elle reçoit un vrai et un faux en même temps ** – auron344

Questions connexes