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 :

[debutant] NullPointerException java


Sujet :

Langage Java

  1. #41
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Benouze Voir le message
    Bonjour,

    C'est cette ligne-là qui entraîne l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((line = reader.readLine()) != null)
    Je le sais car dans ton code seule cette méthode peut générer une IOException comme précisé dans la Javadoc

    Il faudrait donner la trace complète du message pour savoir plus précisemment ce qu'il en est.
    Bonjour,
    En fait, je crois que j'ai plutôt une erreur au niveau de la méthode getArticlesCount, c'est mon compilteur qui le souligne déja.
    je voudrais juste faire appel à la méthode ParseFile() à partir de getArticlesCount, ça marche pas encore
    j'ai mis:
    public int getArticlesCount() {
    Achat test = new Achat();
    data = test.ParseFile();
    .......}

  2. #42
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par flora806 Voir le message
    Bonjour,
    En fait, je crois que j'ai plutôt une erreur au niveau de la méthode getArticlesCount, c'est mon compilteur qui le souligne déja.
    Une petite explication s'impose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ArrayList<Achat> ParseFile() throws IOException
    Le "throws IOException" signifie que cette méthode peut générer une exception de type IOException et qu'il faut la laisser "passer".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int getArticlesCount() {
    Ici pas de throws. Quand apparaît une exception, le programme stoppe et plante.

    Ta console te dit que c'est dans getArticlesCount() que le programme a planté mais c'est bel et bien dans la méthode ParseFile() que cette exception a été lancée.

    Je t'invite à aller voir dans la partie tutoriaux, tu trouveras plein d'informations sur les exceptions et comment les gérer.

  3. #43
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Et quand on met un "\", c'est interprété comme un caractère spécial, donc pour le "déspécialiser", il faut le doubler => "\\"

  4. #44
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Tu avas bien raison, c'était en effet une erreur dûe à IO Exception dans le ParseFile, merci de me l'avoir signalé.
    il fallait que je rajoute try et catch dans ma méthode getArticlesNbr pour que ça marche
    là dans ma classe il n'y a plus d'erreur, par contre en résultat, au lieu d'avoir le nombre des articles achetés, ça me sort le nombre total des lignes dans le fichier (une ligne correspond à un achat). moi je veux juste savoir quels articles ont été achetés et pas leur nombre d'achat..
    sachant que des articles peuvent êtres achetés plusieurs fois et donc ils peuvent être recalculés plusieurs fois en parcourant le fichier.

  5. #45
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Et quand on met un "\", c'est interprété comme un caractère spécial, donc pour le "déspécialiser", il faut le doubler => "\\"
    Merci pour la remarque, je devrais peut etre rajouter un "\" même si je pense que ça n'a pas eu d'effet sur mon code.

  6. #46
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Points : 140
    Points
    140
    Par défaut
    Si tu veux savoir la quantité de chaque article acheté, alors je te conseille d'utiliser une HashMap (clé: identifiant de l'article; valeur:quantité acheté).
    Tu parcours ton ArrayList et pour chaque Achat, tu regardes si l'article existe dans ta HashMap :
    - s'il n'existe pas, tu l'ajoutes avec une valeur de 1
    - s'il existe, tu modifies la valeur (incrémentes de 1 la valeur existante)

    Si tu veux connaître uniquement la quantité d'un article acheté précis, dans ce cas il est préférable d'ajouter un paramètre (l'identifiant de l'article à chercher) à ta méthode pour pouvoir rechercher tous les articles dans ton ArrayList qui correspondent (au paramètre) et ainsi incrémenté la quantité.

  7. #47
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Sinon tu peux aussi faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set<Integer> c = new HashSet<Integer>();
    c.add(12);
    c.add(14);
    c.add(12);
    c.add(15);
    c.add(8);
    c.add(8);
     
    int nbreElements = c.size();
    System.out.println(nbreElements);
    => 4 (le HashsSet ne supporte pas les doublons)

  8. #48
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Sinon tu peux aussi faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set<Integer> c = new HashSet<Integer>();
    c.add(12);
    c.add(14);
    c.add(12);
    c.add(15);
    c.add(8);
    c.add(8);
     
    int nbreElements = c.size();
    System.out.println(nbreElements);
    => 4 (le HashsSet ne supporte pas les doublons)
    Bonjour,
    Je viens de lire vos réponses. Merci.
    Qaudn tu fais c.add(12) --> le 12 correspond à l'Id de l'article?

  9. #49
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Yep ! Ca marche avec n'importe quel objet (le test des doublons se fait sur la méthode "equals").

Discussions similaires

  1. [Debutant] erreur "java.lang.NullPointerException" android
    Par Pif_Paf_Pouf dans le forum Android
    Réponses: 6
    Dernier message: 21/05/2014, 20h50
  2. [DEBUTANT][DTD][JAVA]déclaration d'une DTD ("file: ....
    Par The Wretched dans le forum Valider
    Réponses: 2
    Dernier message: 21/06/2005, 08h57
  3. [debutant]MySql & Java
    Par Stef784ever dans le forum JDBC
    Réponses: 4
    Dernier message: 16/06/2004, 12h49
  4. [debutant]Servlet java
    Par Regis.C dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h28
  5. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13

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