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

Langage Java Discussion :

inverser valeur booleen if saisie clavier == "o"


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    débutant
    Inscrit en
    Mai 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 56
    Par défaut inverser valeur booleen if saisie clavier == "o"
    Bonjour à tous,
    je n'arrive pas à combiner la lecture de la saisie clavier avec le changement de valeur d'un booleen:
    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 Programme {
     
    			public static void main(String[] args) {
     
    				boolean choux=false;
     
    				Scanner sc=new Scanner(System.in);
     
    				System.out.println("Savez-vous planter les choux ? (lettre o minuscule pour oui)");
    				String str=sc.nextLine();
    				if(str=="o"){
    						choux=true;
    					}
     
    				System.out.println(choux);
     
    	}
     
    }
    me donne en sortie console:

    Savez-vous planter les choux ? (lettre o minuscule pour oui)
    o
    false

    ce doit être normal... Mais pourquoi ? et comment faire pour inverser la valeur ?
    merci de vos éclairages...

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Hello,

    le problème n'est pas le booléen, le problème est ce que tu as mis dans ton if.

    Les String sont des objets et en Java on ne compare pas les objets avec ==
    Il faut utiliser equals()

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

  3. #3
    Membre averti
    Homme Profil pro
    débutant
    Inscrit en
    Mai 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 56
    Par défaut
    Merci !

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 451
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hello,

    le problème n'est pas le booléen, le problème est ce que tu as mis dans ton if.

    Les String sont des objets et en Java on ne compare pas les objets avec ==
    Il faut utiliser equals()

    Il est préférable d'inverser le test d'égalité pour gérer correctement les cas null:

    "o".equals(str);

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Je te souhaite bien du courage pour obtenir un null en appelant Scanner.nextLine().

    Mais si tu es de l'école qui préfère ne pas réfléchir pour savoir si une situation de null est possible ou pas et considérer que tout est toujours possible, dans ce cas la solution correcte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objects.equals(str, "o")
    plutôt qu'un vieux hack qu'on utilisait pour gagner du temps à l'époque où la classe utilitaire Objects n'existait pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 451
    Par défaut
    Quitte à donner une réponse, autant qu'elle soit valide dans tous les cas, tu ne crois pas? Tu remarqueras donc que j'ai répondu à "str.equals("o")" et non à "sc.nextline..."

    Il n'est pas question de réfléchir ou non, mais d'avoir une cohérence dans les pratiques en minimisants les possibilités d'erreurs humaine et en réduisant le temps de développement.

    Et moins on réfléchi sur les cas généralisables, plus on peut se concentrer sur les problèmes qui méritent qu'on s'y attardent.

    "".equals(string) n'a rien d'un hack, c'est la seule solution valide pré java 7 (et ici la version de java n'est pas spécifiée il me semble). Et n'est en rien moins efficace en terme d'utilisation, ni de lisibilité, ni de respect de standards.

    Merci donc d'éviter les attaques ad hominem sur les capacités à réfléchir et sur les affirmation gratuite (LA solution valide) sans apporter d'argumentation valide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] saisie clavier
    Par seal dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/08/2005, 12h54
  2. Simuler saisie clavier SendMessage et WM_KEYDOWN
    Par VoLc0m dans le forum Windows
    Réponses: 8
    Dernier message: 11/05/2005, 16h31
  3. Saisie clavier marche pas
    Par Dokho1000 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/03/2004, 13h16

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