Problème If Else

Fermé
sofskoo Messages postés 3 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 4 janvier 2022 - 4 janv. 2022 à 18:03
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 4 janv. 2022 à 20:11
Bonjour, je suis entrain d'apprendre le java. Pour m'entraîner un petit peu j'ai décidé de créer un marché où l'on peut "acheter" différents fruits, BREF. Quand j'écris dans la console "oui", le programme m'envoie directement au ELSE comme si j'avais pas respecté la condition du IF



Je ne comprends pas pourquoi le programme esquive le IF alors que je mets la bonne valeur...
Voilà merci de votre aide!





Configuration: Windows / Firefox 95.0

2 réponses

Utilisateur anonyme
4 janv. 2022 à 18:12
Bonjour

pour poster un code, il faut faire comme décrit sur ce petit tuto (à lire attentivement)
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
sofskoo Messages postés 3 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 4 janvier 2022
4 janv. 2022 à 19:02
Ok merci!
Je vais refaire un autre post alors
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
4 janv. 2022 à 19:03
Bonjour,

"Je ne comprends pas pourquoi le programme esquive le IF alors que je mets la bonne valeur."
Il ne faut jamais comparer la valeur de deux objets avec l'opérateur
==
qui compare uniquement leurs références, pas leur contenu.

String Reponse= clavier.next();
if (Reponse == "oui")

Il est impossible que cela soit vrai, l'objet qui est lu par le clavier est construit à la volée, ça ne peut donc pas être le même objet que celui qui est chargé dans le code, même s'ils ont la même valeur.

Pour comparer la valeur de deux objets il faut utiliser la méthode equals :
if (Reponse.equals("oui"))

Mais attention : "oui" ce n'est pas égal à "OUI", dans le cas spécifique de la classe String on pourrait utiliser equalsIgnoreCase pour que "oui" ou "OUI" soient acceptés :
if (Reponse.equalsIgnoreCase("oui"))
0
sofskoo Messages postés 3 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 4 janvier 2022
4 janv. 2022 à 19:14
Ok donc si je comprends bien, == c'est que pour les valeurs qui sont déjà écrites dans le programme et equals() c'est pour les valeurs écrite au moment même c'est ça?

Mais un tout grand merci à toi pour ton aide!!
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > sofskoo Messages postés 3 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 4 janvier 2022
4 janv. 2022 à 20:11
== c'est que pour les valeurs
Non, pas les valeurs, les références. C'est à dire l'adresse mémoire de l'objet.
On peut savoir que deux objets ont la même adresse mémoire grâce à == dans ce cas c'est exactement le même objet (et donc la même valeur).
Mais l'inverse est faux, deux objets peuvent avoir la même valeur, mais être enregistré dans deux objets différents, dans ce cas ils auront des références différentes.

Quant aux valeurs écrites au moment du programme, c'est spécifique à la classe String. Il y a un système de cache qui fait que toutes les chaînes de caractères stockées en dur dans le code sont enregistrés au même endroit pour économiser de la mémoire afin qu'il n'y ait qu'un seul objet par valeur différente.
0