TP3 méthode equals

Programmation Avancée

Modérateur : Douin

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP3 méthode equals

Message par a.tortevois » 19 oct. 2018 16:13

Apparemment on vérifie juste que deux objets distincts ont des contenus identiques (+ les autres conditions de l'énoncé).
C'est différent de la méthode "Object.equals()" qui vérifie au sens strict que les objets testés réfèrent à la même case mémoire (si j'ai bien compris ;))

// p1 et p2 vide ...
p1.empiler(new String("a"));
p2.empiler(new String("a"));
p1.equals(p2); ==> doit renvoyer true

// p1 et p2 vide ...
p1.empiler("a");
p2.empiler("a");
p1.equals(p2)); ==> doit renvoyer true

// p1 et p2 vide ...
p1.empiler("1");
p2.empiler(1);
p1.equals(p2)); ==> voir viewtopic.php?p=38976#p38976

Bon courage !

Gilles_OLLIVIER
Messages : 9
Inscription : 19 oct. 2018 15:34

Re: TP3 méthode equals

Message par Gilles_OLLIVIER » 19 oct. 2018 17:11

Merci pour la réponse,

En ce qui concerne l'adresse mémoire d'un object et sa valeur c'est l'inverse.
Si tu fais :

String s1 = new String("a");
String s2 = new Strinc("a");

si tu test s1 == s2, sans renvoi faux car ce sont 2 objets distincts.
Pour comparer les valeurs des 2 objets il faut employer equals
s1.equals(s2), on aura en retour un true

Maintenant on doit comparer quoi ? Les valeurs des objets contenus dans la pile, ou les objets aux mêmes ?
car dans ma question précédente, s1 et s2 sont différents mais contiennent la même valeur. Si on doit comparer les objets ça doit renvoyer false, si ce sont les valeurs ça doit renvoyer true.

Et idem pour 1 et "1", même si les valeurs sont identiques, nous avons à faire à deux types différents. Donc si on les compare que doit on avoir en sortie ?
True ou false?

Please help me m. Douin your're my only hope...

RENAUD
Messages : 52
Inscription : 21 sept. 2018 19:34

Re: TP3 méthode equals

Message par RENAUD » 19 oct. 2018 17:27

j'ai conclu par mon test que depiler ("1" ou 1) ce n'était pas pareil que le contenu de pile ("1" ou 1) depiler renvoyant un object, type "wrappers" ou String.
je me demande encore si un :

p1.empiler(1); p2.empiler("1");p1.equals(p2) ;//true

est ce que le equals ne compare pas en fait les contenus toString,
comme si c'était :

p1.toString().equals(p2.toString())

Gilles_OLLIVIER
Messages : 9
Inscription : 19 oct. 2018 15:34

Re: TP3 méthode equals

Message par Gilles_OLLIVIER » 19 oct. 2018 18:57

tant qu'on ne sait pas les résultats attendu aux exemples que j'ai donné, on ne peut pas savoir, et tout est possible.
J'ai fais toutes les options, mais il faut maintenant que je puisse choisir entre toutes !

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP3 méthode equals

Message par a.tortevois » 19 oct. 2018 19:50

JNEWS donne la réponse :
1) test_equals_contenu_different(question2): une pile d'entiers(1,2,3) == une pile de String("1","2","3") ???

Gilles_OLLIVIER
Messages : 9
Inscription : 19 oct. 2018 15:34

Re: TP3 méthode equals

Message par Gilles_OLLIVIER » 19 oct. 2018 21:52

Je ne comprend plus rien, Mes 2 premiers exemples, me donnent des retours différents!
Est-ce que le 3eme est correct?

Exemple 1

Code : Tout sélectionner

String s1 = new String();
s1 = "a";
String s2 = new String();
s2 = "a";
p1.empiler(s1);
p2.empiler(s2);
p1.equals(p2); renvoi Vrai
Exemple 2

Code : Tout sélectionner

p1.empiler(new String("a"));
p2.empiler(new String("a"));
p1.equals(p2);  renvoi Faux 
Exemple 3

Code : Tout sélectionner

p1.empiler("1");
p2.empiler(1);
p1.equals(p2);  renvoi Faux 

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP3 méthode equals

Message par a.tortevois » 19 oct. 2018 22:09

C'est normal,
Le premier exemple, j'ai cru lire une histoire de pool avec les String
Si j'ai bien compris en gros tu crée bien deux objets de type string différent mais en faisant s1 = "a" puis s2 = "a", c'est comme si à la seconde instruction tu faisais s1 = s2

Si tu veux créer deux objets string "a" distinct il faut faire :
String s1 = new String("a");
String s2 = new String("a");

Gilles_OLLIVIER
Messages : 9
Inscription : 19 oct. 2018 15:34

Re: TP3 méthode equals

Message par Gilles_OLLIVIER » 19 oct. 2018 22:16

Donc mon code n'est pas bon!!!

si je met :

this.zone.equals(p.zone)

J'ai une exception de pointeur null!

Si je met :
this.toString().equals(p.toString(), ça ne me différencie pas les 1 et "1"

ne ne vois plus quoi faire!

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité