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 :

Utiliser le OU dans une boucle while


Sujet :

Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Par défaut Utiliser le OU dans une boucle while
    Bonjour,

    j'ai un problème avec un OU dans une boucle do...while. J'ai essayé de mettre || mais ça ne marche pas alors que ça marche très bien si je ne mets qu'une condition.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    do
    {
            //  traitement...
    	k++;
    }
    while(contenuFichier[i+k].equals("blablabla") == false 
                || contenuConfig[i+k].equals("toto") == false);


    Savez-vous comment il faut faire ?

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Le ou se fait bien avec ||

    Si ca ne marche pas, c'est surement parce que les 2 conditions ne sont pas reunies... Bref, sans voir un exemple qui est sensé ne pas marcher, difficile de t'aider...

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ah si, si, ça fonctionne très bien.
    Le problème ne vient sans doute pas du langage, mais de tes conditions

    Ps : y'a pas un comité contre les mots "ça marche pas" dans un problème ? Niveau aide et compréhension du problème, c'est extrêmement utile

    EDIT : grillé.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

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

  4. #4
    Membre très actif Avatar de omarcisses
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 227
    Par défaut
    Regarde la priorité des opérateurs. ajoute des parenthèse je l'ai corrigé ça doit marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while((contenuFichier[i+k].equals("blablabla") == false) 
                || (contenuConfig[i+k].equals("toto") == false));

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Par défaut
    je ne comprend pas vraiment mais ça marche en mettant && au lieu de ||.

    Merci pour vos réponse.

  6. #6
    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
    Citation Envoyé par Hizin Voir le message
    Ps : y'a pas un comité contre les mots "ça marche pas" dans un problème ?
    J'y milite actuellement car ça commence à me XXXXX les XXXXX
    (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

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par Yann_69 Voir le message
    je ne comprend pas vraiment mais ça marche en mettant && au lieu de ||.
    Dans ces cas là, fais du mode debug en pas à pas. Ça te permettra de vraiment voir à l'instant T, la valeur dans la variable contenuFichier[i+k] et la valeur dans la variable contenuConfig[i+k].
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 687
    Par défaut
    Citation Envoyé par omarcisses Voir le message
    Regarde la priorité des opérateurs. ajoute des parenthèse je l'ai corrigé ça doit marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while((contenuFichier[i+k].equals("blablabla") == false) 
                || (contenuConfig[i+k].equals("toto") == false));
    le "==" étant prioritaire sur le "||", il est inutile d'ajouter des parenthèses dans son cas.

  9. #9
    Membre très actif Avatar de omarcisses
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 227
    Par défaut
    Citation Envoyé par Uther Voir le message
    le "==" étant prioritaire sur le "||", il est inutile d'ajouter des parenthèses dans son cas.
    Merci car j’étais pas sur c'est pourquoi j'ai pas fait d'affirmation

    Citation Envoyé par omarcisses
    Regarde la priorité des opérateurs..

  10. #10
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par Yann_69 Voir le message
    je ne comprend pas vraiment mais ça marche en mettant && au lieu de ||.
    Un petit cour de logique booléenne ne serait pas de trop. Tu trouveras des tutos facilement en demandant à ton ami google.

    Mais pour faire simple, une boucle while s'arrete lorsque sa condition est fausse.
    Lorsque tu mets un || entre 2 booleens, le resultat est vrai si un des 2 (ou les 2) est vrai.
    C'est l'inverse pour un &&. C'est à dire que c'est vrai si et seulement si les 2 conditions sont vraies.

    Dans ton cas, avec ||, ton while continue si contenuFichier[i+k]!="blablabla" OU contenuConfig[i+k]!="toto". Autrement dit, il s'arrete lorsque contenuFichier[i+k]=="blablabla" ET contenuConfig[i+k]=="toto".

    Avec un &&, c'est le contraire. Il continue si contenuFichier[i+k]!="blablabla" ET contenuConfig[i+k]!="toto". Autrement dit, il s'arrete lorsque contenuFichier[i+k]=="blablabla" OU contenuConfig[i+k]=="toto".

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Par défaut
    Merci, tu as raison je n'avais pas raisonné correctement.

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

Discussions similaires

  1. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  2. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 17h42
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  4. Réponses: 6
    Dernier message: 17/06/2005, 16h51
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51

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