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 :

Problème de comptage


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème de comptage
    Bonjour!!!
    Bon voilà aprés mes 5 jours de Java, je suis scrupuleusement le livre (est ce la bonne méthode...?) et je me retrouve avec quelques exemples, qui doivent marcher...mais quand je les écrits, c'est toujours rempli de bugs...Donc là exercice sur les Handles, donc pour une fois compilation super sans rien...je me dit génial...SAUF que le résultat obetnu chez eux et "Matricule 1" "Matricule 2" et moi j'ai "Matricule 2" et "Matricule 3"...Alors j'ai bien tout regardé...le code est copie conforme à celui du livre...

    Voici le code :
    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
    public class Main {
     
        public Main() {
        }
     
        public static void main(String[] args) {
    Employe alpha = new Employe();
     
        (new Employe()).afficherMatricule();
        (new Employe()).afficherMatricule();
     
        }
     
    }
     
    class Employe {
        int matricule;
        static int nombre;
     
        Employe() {
            matricule = ++nombre;
        }
    void afficherMatricule() {
        System.out.println("Matricule " + matricule);
     
    }
     
    }
    Si quelqu'un trouve une quel quonque solution...Merci!!C'est pas vraiment important mais j'aimerai savoir si je me suis trompé quelque part (ce qui est plus de probable) ou si c'est une erreur du livre...
    Merci!!

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    matricule=nombre++ est une postincrémentation
    et
    matricule=++nombre est une préincrémentation

    La valeur est incrémentée après/avant d'être affectée...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 856
    Points
    1 856
    Par défaut
    Bonjour, bonne chance pour vos débuts avec Java.

    pour rendre le code lisible.

    Sinon, le code que vous donnez est bien sensé afficher "Matricule 2" et "Matricule 3".

    Vous créez d'abord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Employe alpha = new Employe();
    qui porte le numéro 1 mais qui n'est jamais affiché. Vous créez ensuite deux nouveaux employés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (new Employe()).afficherMatricule();
    (new Employe()).afficherMatricule();
    qui reçoivent les numéros 2 et 3 et les affiche.

    Il faudrait nous donner le code du livre pour que nous voyions la différence.

  4. #4
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    De toutes les facons le code est bon, donc soit ils se sont plantes dans le bouquin soit tu l'as mal recopie. Mais dans tous les cas ce que tu affiche concorde avec tes ligne de codes.

  5. #5
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    nombre est déclaré de façon statique, c'est une variable globale au programme. Si une entité modifie son contenu (ici le premier employé) elle est modifiée pour toutes les autres.
    Si tu veux voir le contenu de nombre à l'instanciation de alpha, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alpha.afficherMatricule();

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ya un truc que je comprends pas ... où est instancié la valeur de nombre.

    Enfin je ne comprends pas que ça ne déclenche pas un NullPointer.

    Un variable static est initialisée pas défaut ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 856
    Points
    1 856
    Par défaut
    Java instancie par défaut toutes les variables à 0, à vide, à null, etc...

    Mais c'est très très mauvais pour la lisibilité du code de ne pas le faire explicitement, donc vous avez raison de vous poser la question.

    Où voyez-vous parler de NullPointer?

  8. #8
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par BugFactory
    Où voyez-vous parler de NullPointer?
    Ben généralement si un objet est déclaré mais pas instancié, faire une opération dessus déclenche un NullPointer.

    Comme je m'étonnais de ne pas voir d'initialisation, je m'étonnais également de ne pas voir de NullPointer. C'est tout En meme temps il est vrai qu'un int ne peut pas être null. C'est moi qui délire. Enfin bref, c'est l'heure aussi

    Mais bon c'est Ok.

    merci de l'explication

  9. #9
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    On dit de Java qu'il est "tout objet", mais c'est un abus de langage : il possède tout de même des types primitifs (int, float, char, boolean, (String est un hybride)).
    Ces variables, lorsqu'elles sont des attributs, sont initialisées par défaut à 0 ou "" selon le type, lors de l'instanciation de l'objet.

    C'est pour celà que tu peux les utiliser.

  10. #10
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Permettez-moi de compléter la réponse.

    Seules les variables d'instances sont automatiquement initialisés. Les variables locales ne le sont pas.

    Exemple le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void maMethode(){
      int i;
      if (i==0){
           System.out.println("i == 0");
      }
    }
    entrainera l'erreur suivante à la compilation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Locale variable i may not have been initialized.

  11. #11
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    c'est pas ce que j'ai dit ? o_O

  12. #12
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par NeptuS
    c'est pas ce que j'ai dit ? o_O

    En effet , je dois avouer que j'ai lu rapidement ton message et que la partie en gras m'a échappé.

    Citation Envoyé par NeptuS
    Ces variables, lorsqu'elles sont des attributs, sont initialisées par défaut à 0 ou "" selon le type, lors de l'instanciation de l'objet.

    Désolé je le ferai plus

  13. #13
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    lol .. vilain garçon

    nan .. de toutes façons, si tu l'avais pas vu, c'est que c'était pas assez mis en avant, je le reconnais, donc ta précision pouvait s'avérer nécessaire.
    Merci, merci pour gunnm18

Discussions similaires

  1. Petit problème de comptage
    Par toine38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/01/2008, 09h41
  2. problème de comptage
    Par toxic_37 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/10/2007, 15h47
  3. Problème de comptage sur des dates
    Par Oberown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/04/2007, 17h04
  4. [VBA-E]Problème de comptage
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/05/2006, 10h25
  5. [MySql] Problème de comptage
    Par Oberown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 05h44

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