Test d'égalité [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Statut
Membre
Dernière intervention
16 avril 2009
-
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Statut
Membre
Dernière intervention
16 avril 2009
-
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

5 réponses

Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9
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;
}
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Statut
Membre
Dernière intervention
16 avril 2009

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.
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Statut
Membre
Dernière intervention
16 avril 2009

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
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9
Nous pouvons p.ex. les numéroter. Alors, si les numéros se suivent, les balles sont adjacentes.
Messages postés
5
Date d'inscription
mercredi 25 mars 2009
Statut
Membre
Dernière intervention
16 avril 2009

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!!!