IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème avec la condition if : Comparaison (== "o") non prise en compte


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Déclarant en douane
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Déclarant en douane
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut Problème avec la condition if : Comparaison (== "o") non prise en compte
    Bonjour,

    Je suis en train de me familiariser avec le langage JAVA.

    J'aborde le système de condition "if".

    J'ai écrit le programme ci dessous pour que, si la condition est bien égale à "o", alors il me renvoie un smiley souriant.
    Cependant, j'ai beau tout essayer depuis 2h, c'est le smiley triste qui apparaît, et ce smiley commence sérieusement à déteindre sur mon visage.

    Pouvez vous svp m'aider ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.Scanner;
     
    public class LeMondeVousSourit {
    	public static void main (String args[]) {
     
    		Scanner keyboard = new Scanner (System.in);
    		String Reponse;
     
    		System.out.print("Souhaitez vous voir un smiley? (o=oui et n=non) ");
    		Reponse = keyboard.nextLine();
     
    		if (Reponse == "o") {
    			System.out.println (":-)");
    		} else {
    			System.out.println (":-(");
    		}
     
    		keyboard.close();
    	}
     
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    On compare des chaines de caractères avec la méthode equals de la classe String. == ne fonctionnera pas pour ce type
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Déclarant en douane
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Déclarant en douane
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut Un grand merci Wax78
    Salut Wax et merci pour ton aide.

    Ce qui est étrange, c'est que dans mon bouquin, il me demande de taper un programme pour effectuer cette manipulation, mais qu'on a jamais abordé la méthode equals...

    Bref, au moins ça marche et j'aurai appris quelque chose d'utile grâce à toi.

    Merci encore.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Tu peux utiliser == si tu as un type de variable char, la ça marchera
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Bonjour,

    C'est déroutant et aussi dans le titre: Comparaison (== "o").

    J'ai des années d'expérience, et c'est chaque fois déroutant, même pour moi retraité.
    Discuter le sujet demanderait pas mal de temps et de discussions.

    Je suis venu du monde C++ avant de passer à Java, il y a plus de 20 ans.
    En C++ c'est beaucoup plus précis, où on peut comparer des objets, leurs valeurs ou contenus, en définissant (surchargeant) l'opérateur ==.

    En Java, pour faire simple, j'utiliserais la méthode compareTo() voire un switch() case:.

    Encore une fois, expliquer l'usage en Java et les différences entre ==, equals() et compareTo() pourrait prendre du temps, avec des exemples de code évidemment (et les erreurs classiques) et des explications au top!

    De toute manière il faudra vérifier le code avec un débogueur et entrer des o, n.
    Si on entre un O majuscule, il faudrait l'accepter aussi et ajouter le code ... donc switch() case:!?

    Cela pourrait faire partie d'un concours ici, sur ce sujet, et en maximum 2 pages A4
    Cordialement

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Certes, mais d'un autre coté j'ai aussi pas mal de code C++ ou on y comprends plus grand chose car le programmeur d'origine avait surcharge tous les opérateurs (pas juste ==) sur presque tous ses types donc parfois on a du mal a comprendre ce que ça fait en fait (sans parler de la doc inexistante).

    Faut penser a compareIgnoreCase() si la case n'est pas importante.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Problème avec une Condition Ou ||
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 14/01/2009, 12h19
  2. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23
  3. Réponses: 1
    Dernier message: 25/05/2007, 22h31
  4. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18
  5. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo