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 compréhension && / ||


Sujet :

Java

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut Problème compréhension && / ||
    Bonjour à tous !

    Je crois que j'ai un gros problème avec les opérateurs booléens...

    J'ai deux dates différentes, la première est inférieure à la deuxième et je souhaite calculer le nombre de calendriers mensuels que je dois afficher pour englober ces deux dates.

    Je boucle donc jusqu'à ce que le mois ET l'année de ma première date soient identiques au mois et années de la seconde date. Dans la boucle j'incrémente uniquement le mois de la première date.

    J'ai donc codé ceci :

    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
     
    private static int computeNbCals(Date debut, Date fin) {
    		Calendar calStart = GregorianCalendar.getInstance();
    		calStart.setTime(debut);
     
    		Calendar calEnd = GregorianCalendar.getInstance();
    		calEnd.setTime(fin);
     
    		int nbCals = 1;
     
    		while((isNotSameMonth(calStart, calEnd) && isNotSameYear(calStart, calEnd))) {
    			nbCals++;
    			calStart.add(Calendar.MONTH, 1);
    		}
     
    		return nbCals;
    	}
    Et là je lis : "Tant que les mois ne sont pas identiques ET que les années ne sont pas identiques on continue la boucle", sauf que dans la réalité j'observe que je sors de la boucle dès que l'une OU l'autre condition est remplie.

    Si je remplace mon "&&" par "||", donc mon ET par un OU ça fonctionne correctement...

    A quel endroit j'ai faux dans ma réflexion ?

    Merci pour vos éclaircissements

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 481
    Points : 48 794
    Points
    48 794
    Par défaut
    Citation Envoyé par julien.1486 Voir le message
    Et là je lis : "Tant que les mois ne sont pas identiques ET que les années ne sont pas identiques on continue la boucle", sauf que dans la réalité j'observe que je sors de la boucle dès que l'une OU l'autre condition est remplie.
    Ben oui, c'est exactement ce que veux dire "Tant que les mois ne sont pas identiques ET que les années ne sont pas identiques on continue la boucle"


    Si ta condition est X && Y, la condition sera fausse si X est faux ou si Y est faux. En logique, on exprime ça par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NOT (X AND Y) = (NOT X) OR (NOT Y)

    voir http://fr.wikipedia.org/wiki/Alg%C3%..._%28logique%29 pour plus de détail

  3. #3
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : septembre 2004
    Messages : 1 676
    Points : 4 158
    Points
    4 158
    Par défaut
    et en java, cela donne :

    !(X && Y) = (! X) || (! Y)

    après, à toi d'écrire ce qui te semble le plus naturel.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

Discussions similaires

  1. [XHTML] Problème de variable &
    Par navis84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/08/2008, 10h55
  2. Problème de signe &
    Par new_wave dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2008, 18h18
  3. problème compréhension code
    Par mitherkiller dans le forum SDL
    Réponses: 3
    Dernier message: 13/04/2007, 10h38
  4. [MFC]Problème compréhension code
    Par bitardo dans le forum MFC
    Réponses: 1
    Dernier message: 23/05/2006, 16h56
  5. [Smarty] problème compréhension sur les tableaux
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 09/02/2006, 17h44

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