Je ne comprends pas ce b*rdel
Résolu/Fermé
OmeGaFire_
Messages postés
83
Date d'inscription
dimanche 19 juin 2016
Statut
Membre
Dernière intervention
19 janvier 2018
-
Modifié par baladur13 le 15/11/2016 à 19:09
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 15 nov. 2016 à 19:05
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 15 nov. 2016 à 19:05
A voir également:
- Je ne comprends pas ce b*rdel
- [<B>contenu masqué</b>] ✓ - Forum Android
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Rj45 a ou b - Forum câblage
- B-parts avis - Forum Consommation et internet
- B exit avis - Forum Consommation et internet
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
15 nov. 2016 à 18:49
15 nov. 2016 à 18:49
Bonjour,
if (op == "+")est faux car il ne faut jamais comparer deux objets avec == qui fait une comparaison des références d'objets, pas de leur valeur, ça c'est le rôle de la méthode equals :
if(op.equals("+")), idem pour if (op == "-");auquel tu devras en plus enlever le
;qui n'a rien à faire là.
15 nov. 2016 à 18:53
Pour moi, par logique, je pensais que pour les variables et les objets c'était la même chose, mais aparement non xD
Bon bah merci :D
15 nov. 2016 à 19:05
Si tu compares deux références avec == tu vas juste comparer l'entier de l'adresse mémoire, alors que ce que tu veux toi, c'est savoir si les valeurs qui sont dans l'objet sont similaires, même si ce n'est pas physiquement le même objet.
Concrètement pour deux String, on va devoir comparer un par un chacun des caractères avant de savoir s'ils sont égaux. Voilà comment c'est fait en vrai :
public final class String { private final char value[]; // ... public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } // ... }