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 :

[débutant] If imbriqués me donne pas le résultat attendu


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [débutant] If imbriqués me donne pas le résultat attendu
    Bonjour tout le monde,

    Je dois faire un exercice qui dis si une année est bissextile (années divisibles par 4) et cela en tenant compte des années séculaires (années non divisibles par 400).

    Ma question :

    Dans le code ci-dessous, il y'a un if imbriqué.

    Si le premier la condition du premier if n'est pas respectée, je présûme que le code ne s'occupe même pas du second if ?

    Si la première condition est OK, est-ce qu'il tient compte de la seconde ?

    Exemple : 1900 est divisible par 4 mais pas par 400 mais il me dit que c'est une année bixestile.

    Donc le résultat n'est pas correcte.

    Il faudrait donc trouver un "truc" qui permettrait de savoir si l'année se termine par 00 et à ce moment là, on pourrait diviser par 4 et ensuite par 100, connaissez-vous l'astuce pour savoir si un Int se termine par 00 ?

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class AnneeBixestile 
     
    {
     
    public static void main (String[] args)
     
    {
    	int anneeAControler;
     
     
    	System.out.println("Veuillez indiquer une année (en 4 chiffres), je vous dirai si elle est bixestile ou non ");
    	anneeAControler = Clavier.lireInt();
    	//System.out.println("l'année entrée vaut : " + anneeAControler);
     
    	if ((anneeAControler % 4) == 0)
    	{
     
    		if ((anneeAControler % 100 == 0))
    		{
    			System.out.println(anneeAControler + " est bixestile");
    		}
    	}
     
    	else
     
    	{
    		System.out.println(anneeAControler +" n'est pas une année bixestile !");
    	}
     
     
     
    }	
    }
    Merci d'avance.

    beegees

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Points : 48
    Points
    48
    Par défaut
    Tu teste si 1900 est divisible par 4 ==>ok
    puis si 1900 est divisible par 100 ==> ok
    D'ou ton retour.... ce n'est pas parceque un chiffre est divisible par 4 puis par 100 qu'il est divisible par 400

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Marnor
    Tu teste si 1900 est divisible par 4 ==>ok
    puis si 1900 est divisible par 100 ==> ok
    D'ou ton retour.... ce n'est pas parceque un chiffre est divisible par 4 puis par 100 qu'il est divisible par 400
    Bonjour,

    1900 / 4 = ok

    par contre le quotient / 100 n'est pas entier.

    Donc 1900 n'est pas bissextil, 2008 l'est.

    Le test devrait se faire au niveau des siècles (1800, 1900...)

    Merci
    beegees

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut
    Salut,

    Le problème c'est que tu divise 1900 par 4 puis 1900 par 100.

    Ce n'est pas parce que tu testes si 1900 est divisible par 4 que la valeur de ta variable change, elle reste à 1900!

    Donc pour le 2ème if() tu teste 1900/100 et pas 475/100.

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par gids01
    Salut,

    Le problème c'est que tu divise 1900 par 4 puis 1900 par 100.

    Ce n'est pas parce que tu testes si 1900 est divisible par 4 que la valeur de ta variable change, elle reste à 1900!

    Donc pour le 2ème if() tu teste 1900/100 et pas 475/100.
    Salut,

    Merci pour ta réponse.

    En effet, je peux ajouter une nouvelle variable qui acceuillera la valeur de 1900/4.

    Le problème est que par exemple pour 2008, on divise par 4 et stop on ne doit pas diviser par 100, par contre le 1900, il faut faire les deux opérations.

    C'est pourquoi il faudrait faire :

    Si annee se termine par 00 alors
    Si annee se termine pas par 00, division par 4
    si annee % 400 == 0
    annee bissextile
    autrement
    annee n'est pas bissextile

    Il doit y avoir plus simple, qu'en penses-tu ?

    Merci encore pour ton aide.

    beegees

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut
    Il y a surement une meilleure facon de faire mais je vois pas trop.

    En meme temps, c'est pas un calcul trop lourd donc je pense que tu peux y aller comme ca....

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/02/2010, 20h15
  2. un left join ne me donne pas le résultat attendu
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/12/2008, 16h58
  3. [If] Test de condition ne donne pas le résultat attendu
    Par Moktar19 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2008, 14h52
  4. Réponses: 2
    Dernier message: 11/12/2006, 19h46
  5. Concaténation ne donne pas le résultat attendu
    Par artotal dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 01h37

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