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 :

probleme de constructeur


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Points : 139
    Points
    139
    Par défaut probleme de constructeur
    Bonjour,

    ma classe doit affichée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Jour 1 Heure: 0 Minute: 0
     jour 7 Heure: 22 Minute: 39
    mais elle m'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2
     Heure: 0 Minute: 0
    2
     Heure: 22 Minute: 39
    en fait lors de l'execution elle ne passe par le constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteurCompose(CompteurSimple compt, CompteurCompose compt2, CompteurCompose compt3)
    puisqu'elle affiche 2 comme valeur au lieu de 3.

    Pourquoi ce constructeur n'est pas appelé ?

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    class CompteurCompose
    {
        CompteurSimple cpt;
        static CompteurCompose cpt2,cpt3;
        static int nbcpt;
     
        CompteurCompose(CompteurSimple compt)
        {
    	cpt=compt;
    	nbcpt=1;
        }
        CompteurCompose(CompteurSimple compt, CompteurCompose compt2)
        {
    	cpt=compt;
    	cpt2=compt2;
    	nbcpt=2;
        }
        CompteurCompose(CompteurSimple compt, CompteurCompose compt2, CompteurCompose compt3)
        {
    	cpt=compt;
    	cpt2=compt2;
    	cpt3=compt3;
    	nbcpt=3;
    	System.out.println(nbcpt);
        }  
        void inc()
        {
    	if(cpt.inc() && nbcpt>1)
    	    {
    		if(cpt2.cpt.inc() && nbcpt>2)
    		    cpt3.cpt.inc();
    	    }
        }
        void affiche()
        {
            System.out.println(nbcpt);
    	if(nbcpt>2)
    	    cpt3.cpt.affiche(); 
    	if(nbcpt>1)
    	    cpt2.cpt.affiche();  
    	cpt.affiche(); 
            System.out.println();
        }
        public static void main(String[] args)
        {
    	int i;
    	CompteurCompose c;
    	c=new CompteurCompose(new CompteurSimple(0,59,"Minute"),new CompteurCompose(new CompteurSimple(0,23,"Heure"),new CompteurCompose(new CompteurSimple(1,365,"Jour"))));
     
    	c.affiche();
     
    	for(i=1;i<10000;i++)
    	    c.inc();
    	c.affiche();
        }
    }

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut Re: probleme de constructeur
    Salut,

    Citation Envoyé par semaj_james
    Pourquoi ce constructeur n'est pas appelé ?
    Je vais peut-être te faire une réponse qui te semblera débile, mais.... il n'est pas appelé parce que tu ne l'appelles jamais dans ton code!

    Regarde tes appel de constructeurs, tu n'utilises que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteurCompose(CompteurSimple compt)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteurCompose(CompteurSimple compt, CompteurCompose compt2)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    +1 pour Plegat

    En plus, j'essaierai de simplifier le code la manière suivante:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    class Compteur
    {
        private Compteur cptEnfant = null;
        private int compteur = 0;
        private int minValeur;
        private int maxValeur;
        privqte String unite;
     
        Compteur(int min, int max, String unite)  {
            Compteur(min, max, unite, null);
        }
     
        Compteur(int min, int max, String unite, Compteur cptEnfant)  {
            /* Validation des valeurs */
            this.minValeur = min;
            this.maxValeur = max;
            this.unite = unite;
            this.cptEnfant  = cptEnfant;
     
            compteur = minValeur;
        }
     
        boolean inc() {
            boolean report = true;
     
             if (cptEnfant != null) {
                report = cptEnfant.inc();
             }
     
             if (report) {
                if ( ++compteur > maxValeur) {
                     compteur = minValeur;
                }
                else {
                    report = false;
                }
             }
     
             return report;
        }
     
        void affiche()
        {
             System.out.print(unite + " " + compteur);
             if (cptEnfant != null) {
                cptEnfant.affiche();
             }   
        }
     
     
        public static void main(String[] args) {
           int i;
          Compteu c;
          c = new Compteur( 1, 365, "Jour",
                                       new Compteur( 0, 23, "Minute",
                                                              Compteur( 0, 59, "Minute")));
          c.affiche();
          for (i = 1; i < 10000; i++) {
              c.inc();
          }
     
          c.affiche();
        }
    }
    Ma proposition permet plus facilement d'ajouter des compteurs pour les secondes, les siècles et les millénaire.
    Bien le bonjour chez vous
    Jowo

  4. #4
    Membre habitué Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Points : 139
    Points
    139
    Par défaut Re: probleme de constructeur
    Citation Envoyé par plegat
    Salut,

    Citation Envoyé par semaj_james
    Pourquoi ce constructeur n'est pas appelé ?
    Je vais peut-être te faire une réponse qui te semblera débile, mais.... il n'est pas appelé parce que tu ne l'appelles jamais dans ton code!

    Regarde tes appel de constructeurs, tu n'utilises que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteurCompose(CompteurSimple compt)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteurCompose(CompteurSimple compt, CompteurCompose compt2)
    Je ne comprend pas bien, quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       c=new CompteurCompose(new CompteurSimple(0,59,"Minute"),new CompteurCompose(new CompteurSimple(0,23,"Heure"),new CompteurCompose(new CompteurSimple(1,365,"Jour"))));
    Il n'y a pas 3 parametres ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1) new CompteurSimple(0,59,"Minute")
    2) new CompteurCompose(new CompteurSimple(0,23,"Heure"),
    3) new CompteurCompose(new CompteurSimple(1,365,"Jour")

  5. #5
    Membre habitué Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par jowo
    +1 pour Plegat

    En plus, j'essaierai de simplifier le code la manière suivante:
    malheureusement je suis obligé d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       c=new CompteurCompose(new CompteurSimple(0,59,"Minute"),new CompteurCompose(new CompteurSimple(0,23,"Heure"),new CompteurCompose(new CompteurSimple(1,365,"Jour"))));

Discussions similaires

  1. Probleme avec constructeur surchargé
    Par dr971 dans le forum C++
    Réponses: 3
    Dernier message: 04/04/2007, 11h16
  2. Probleme de constructeur.
    Par Mickey.jet dans le forum Delphi
    Réponses: 4
    Dernier message: 31/05/2006, 19h42
  3. [JTable] probleme de constructeur et d'affichage
    Par hby dans le forum Composants
    Réponses: 3
    Dernier message: 01/05/2006, 16h43
  4. Probleme de constructeur
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/03/2005, 10h48
  5. Réponses: 13
    Dernier message: 02/02/2005, 00h21

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