Test d'égalité

Résolu
jamal1984 Messages postés 5 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 16 avril 2009 - 13 avril 2009 à 01:14
jamal1984 Messages postés 5 Date d'inscription mercredi 25 mars 2009 Statut Membre 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

5 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
13 avril 2009 à 09:07
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;
}
3
jamal1984 Messages postés 5 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 16 avril 2009
16 avril 2009 à 01:41
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.
3
jamal1984 Messages postés 5 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 16 avril 2009
13 avril 2009 à 17:39
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
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
14 avril 2009 à 21:32
Nous pouvons p.ex. les numéroter. Alors, si les numéros se suivent, les balles sont adjacentes.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jamal1984 Messages postés 5 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 16 avril 2009
15 avril 2009 à 14:21
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!!!
0
Rejoignez-nous