Test d'égalité [Résolu]

Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Dernière intervention
16 avril 2009
- - Dernière réponse : jamal1984
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Dernière intervention
16 avril 2009
- 16 avril 2009 à 01:41
Bonjour tous le monde,
Bon ma question concerne sur un test d'égalité de trois ball adjacents de même couleur,
j'ai crée une chaine de ball dans la quelle la classe ball est agrégée dans la chaine est le but c'est que lorsque je rassemble trois ball de même couleurs, il faut qu'ils disparaissent de la chaine ce qui me coincent vraiment,

j'ai pensé de faire le test d'égalité avec equal mai je sai pas jouer sur le corps des instructions..

Merci  en avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Dernière intervention
15 juillet 2012
3
Merci
Nous pouvons implémenter les méthodes "equals" et "hashCode" dans la classe Ball. L'exemple suivant n'utilise que le champ "color", donc deux balles sont égaux, si elles ont la même couleur. Evidemment, tu peus aussi inclure d'autres champs:

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final Ball other = (Ball) obj;    if (this.color !other.color && (this.color null || !this.color.equals(other.color))) {
        return false;
    }
    return true;
}

@Override
public int hashCode() {
    int hash = 5;
    hash = 37 * hash + (this.color != null ? this.color.hashCode() : 0);
    return hash;
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de uhrand
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Dernière intervention
16 avril 2009
3
Merci
Bonjour,
je vous explique ma situation;
en faite j'ai crée une chaine de balls sous cette forme:
balls = new ArrayList();
balls.add(new Ball(ballPath, 3,new Color(0,0,255)));
            balls.add(new Ballspecial1(ballPath,4,Color.white));
            balls.add(new Ball(ballPath, 4,new Color(0,255,255)));
            balls.add(new Ball(ballPath, 5,new Color(64,64,64)));
            balls.add(new Ball(ballPath, 6,new Color(128,128,128)));
            balls.add(new Ball(ballPath, 7,new Color(0,255,0)));
            balls.add(new Ball(ballPath, 8,new Color(0,255,30)));
            balls.add(new Ballspecial3(ballPath,27,Color.yellow));

le probleme c'est que lorsque je clique sur la chaine, je m'ajoute une balle en position clickée et lorsque je rassemble trois de meme couleur elles disparaissent de la chaine, donc comment je dois modifier la méthode equal() proposée ci dessus pour tester l'egalite au niveau de l'attribut couleur.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de jamal1984
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Dernière intervention
16 avril 2009
0
Merci
Bonjour,
je vous remercie bcp de votre aide,
mai j'ai encore un petit souci, comment je doi assurer que les balls sont adjacents sur une ArrayList.
Merci en avance
Commenter la réponse de jamal1984
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Dernière intervention
15 juillet 2012
0
Merci
Nous pouvons p.ex. les numéroter. Alors, si les numéros se suivent, les balles sont adjacentes.
Commenter la réponse de uhrand
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Dernière intervention
16 avril 2009
0
Merci
Alors, ce que j'ai compris c'est que je vais écrire un code comme si dessous:
final Ball other1 = (Ball) obj;
        final Ball other2 = (Ball) obj;        if (this.color !other1.color && (this.color null || !this.color.equals(other1.color)) &                 this.color !other2.color && (this.color null || !this.color.equals(other2.color)) ) {
            return false;
        }
        return true;
    }

Merci bcp!!!
Commenter la réponse de jamal1984

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.