Problème If Else
sofskoo
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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!
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
A voir également:
- If java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
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
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
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
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 :
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 :
"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"))
== 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.
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.
Je vais refaire un autre post alors