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

avec Java Discussion :

Condition en Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut Condition en Java
    Hello,

    Je débute en Java, un truc bête comme tout que j'arrivais à faire sans problème en PHP sur le test de deux conditions, voici mon code JAVA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void main(String[] args) {
    		System.out.println("Voulez vous convertire des Celsius en Fahrenheit (1) ou des Fahrenheit en Celsuis (2) ?");
    		Scanner sc = new Scanner(System.in);
    		int str = sc.nextInt();
    		System.out.println(str);
    		while(str != '1' || str != '2') { // c'est cette condition qui ne marche pas et qui boucle en permanence quelque soit la valeur de str
    			System.out.println("Veuillez choisir 1 ou 2 !");	
    			str = sc.nextInt(); 
    			System.out.println(str);
    		}
    En fait,mon programme ne sort jamais de la boucle, même si je saisi 1 ou 2, pourtant str est bien égale à 1 ou 2.

    Ma boucle dit : tant que str n'est pas égale à 1 ou str n'est pas égale à 2 alors j’exécute le contenu de la boucle.

    Merci d'avoir lu mon msg jusqu'au bout.

    Nico.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (str != '1' || str != '2')
    signifie :

    • soit str!='1'
    • soit str!='2'

    Si str vaut '1', alors il est différent de '2', donc la condition (str!='1' ou str!='2') est vraie (a ou vrai est toujours vrai). Si str vaut '2' alors il est différent de '1', donc (str!='1' ou str!='2') est vraie( vrai ou a est toujours vrai). Si str vaut '3' alors il est différente de '1' (et aussi de '2'), donc (str!='1' ou str!='2') est vraie. Etc. La condition est donc toujours vraie.


    Il n'y a pas de raisons que ça ne soit pas pareil en PHP : c'est de l'algèbre de Boole. (vrai ou a) = (a ou vrai) = vrai, quelque soit a.

    Algèbre de Boole qui dit aussi que !a || !b = !(a && b).
    Donc (str != '1' || str != '2') est égal à !(str=='1' && str=='2'). str ne peut pas être à la fois égal à 1 et à 2, et dans tous les autres cas, les deux conditions sont fausses, donc (str=='1' && str=='2') est toujours faux (Boole aussi : (a et faux) = (faux et a) = faux, quelque soit a), donc !(str=='1' && str=='2') est toujours vrai (pas faux = vrai). Donc (str!='1' || str!='2') est toujours vrai.


    Par ailleurs, tu lis un int avec int str = sc.nextInt();. Tu demandes de saisir 1 ou 2. 1 (le int 1) n'est pas égal à '1' (le caractère 1). Il faut comparer avec un int. Ou lire un char.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut merci
    Bonjour,

    Merci pour ces éclaircissements.

    Cordialement,

    Nico.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut Une réponse un plus simple
    Je donne une réponse un peu plus simple pour les débutants qui passent par la :

    La condition logique à employer dans mon exemple est :

    while(str != '1' && str != '2')

    Et pour que sa compare bien les même valeur il faut convertir STR en caractère (char str = ' '

    Nico.

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

Discussions similaires

  1. utilisation des conditions en java
    Par stpaul04 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 25/01/2011, 09h36
  2. (condition) ? si vrai : si faux (comme en Java)
    Par benoitldr dans le forum C#
    Réponses: 5
    Dernier message: 22/09/2010, 10h34
  3. java condition ternaire
    Par domxaline dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 14/07/2009, 12h55
  4. Réponses: 2
    Dernier message: 11/06/2009, 23h48
  5. [Java] comment faire les conditions ?
    Par tarekphp dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 22/08/2008, 09h39

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