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

  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 104
    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 104
    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 104
    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 104
    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 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    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

  7. #7
    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
    Citation Envoyé par bouye Voir le message
    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).
    J'ai été responsable de la méthodologie dans mon entreprise.
    Nous avions des documents de "règles de codage" révisés par des experts et acceptés par tous.
    C'est un des documents que recevait toutes personnes arrivant dans notre groupe de développement.
    Le programmeur mentionné n'aurait pas fait 5 minutes dans nos séances de "code review".

    Quand on a travaillé des années avec de bonnes règles, cela fait partie des gènes du programmeur.
    Mais ce n'est pas comme le covid-19, cela s'apprend et aussi en acceptant les règles, même si on n'est pas trop d'accord au début.

    Même topo pour la doc, et là il y a de bons outils comme Javadoc supporté par Eclipse.
    Tich95 pourrait l'essayer avec sa classe LeMondeVousSourit qui mériterait d'être une vraie classe et pas juste un main().
    Mais là c'est plus du domaine des "règles de design".
    Cordialement

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, 13h19
  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, 13h23
  3. Réponses: 1
    Dernier message: 25/05/2007, 23h31
  4. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 17h18
  5. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 16h59

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