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 avec la classe Vector.


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Problème avec la classe Vector.
    Bonsoir,

    j'aurais besoin d'aide concernant le programme. Lorsque je compile tout est OK, puis losrque je l'execute, lorsque il doit rajouter un élément à la liste, j'ai le message suivant durant l'opération:
    rssvct.unoeud.add(anode);

    Sortie standard:
    Saisissez une url :
    http://tempsreel.nouvelobs.com/file/..._permanent.xml
    Merci !
    1 Affaire Clearstream : Sarkozy dément des propos de Villepin [2006-12-25 14:16:19]
    Exception in thread "main" java.lang.NullPointerException
    at mkrss.Main.main(Main.java:95)


    Merci d'avance pour votre aide.

    Bonsoir.

    Voilà mon main:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    package mkrss;
     
    import java.io.* ;
    import org.w3c.dom.*;
     
     
    public class Main {
     
     
        public Main() {
        }
     
        /**
         * @param args the command line arguments
         */
           public static void main(String[] args) throws Exception {
     
           String saisie;                     //variable de saisie contenant l'url du flux rss.
           String rep="OK";
           int [] lus;                        //tableau contenant les indices d'articles consultés.
           MkTree rssvct = new MkTree();     //Déclaration d'un tableau.
           MkItem  anode = new MkItem();     //Déclaration d'un élement contenant toutes les infos concernant un titre.
           String atitre = "";                //variablede travail.
           String adescription = "";        //variable de travail.
           String alink ="";                //variable de travail.
     
           OutilsIO  monoutilIO = new OutilsIO();
           OutilsDOM monoutil = new OutilsDOM();
     
           //gestion d'un fichier.
           DataOutputStream outlistesites = monoutilIO.OpenFile("listesites.log");
           //regarder si le site a déjà était visité.
           outlistesites.close ();
     
     
           BufferedReader entreeClavier = new BufferedReader(
                   new InputStreamReader(System.in));
     
     
           while (! rep.equals ("fin")){
     
               System.out.println ("Saisissez une url :");
               saisie = entreeClavier.readLine();
               System.out.println ("Merci !");
               //System.out.println ("Vous avez demandé à récupérer le flux rss: ");
               //System.out.println (saisie);
     
     
     
               InputStream ismain = monoutil.OuvrirConnexion(saisie);
     
               Document envfabricdoc = monoutil.CreerFabriqueDocument (ismain);
     
               /* Parcours de l'arbre et extraction des informations */;
     
                   NodeList nlitem = envfabricdoc.getElementsByTagName("item");
     
                   for (int i=0 ; i<nlitem.getLength(); i++)
                   {
     
                       Element item = (Element)nlitem.item(i);
     
     
                       /* Affichage des titres et des articles        */
                       /* et remplissage au fur et à mesure du vector */
     
                       for (Node child = item.getFirstChild(); child!=null ; child = child.getNextSibling())  
                       {
                           if (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("title"))
                           {
                               atitre = child.getTextContent ();
                               System.out.println(i+1 + "\t" + atitre);
                           }
                           else if  (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("description"))
                           { 
                               adescription = child.getTextContent();   
                               //System.out.println("\t\t" + adescription);
                           }
                           else if ( child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("link"))  
                               { 
                                   alink = child.getTextContent();
                                   //System.out.println("\t\t" + alink);
                               }
     
                   } //fin de for
     
                   //initialisation d'un élément à ajouter au vecteur.   
                   anode.MkItem(saisie, atitre, adescription,alink);
     
     
              -->  rssvct.unoeud.add(anode);
     
               }//fin de for
     
     
               System.out.println ("Voulez-vous continuer? Si non, taper fin. ");
               rep = entreeClavier.readLine();
               System.out.println (rep);
     
           }//Fin de while
     
     
           //affichage de la taille de la liste
           //System.out.println( rssvct.unoeud.size());
     
     
     
           System.out.println ("FIN DU PROGRAMME");
     
     
        }//fin de méthode Main
     
    }//fin de la classe Main

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    ton erreur provient a quel "n" element de ton tree ?

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Salut,

    d'abord désolé pour les balises.
    Ensuite cela intervient au premier passage, lors de la première insertion dans la liste.

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par eclesia
    Ton code est illisible, tu mets la balise code comme on te le dit, merci !!!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    merci adiGuba, j'y penserais sans faute la prochaine fois.

    @+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    alut,

    je devrais donner plus d'informations.
    Voilà, mon but est de programmer un parser , donc mon programme demande l'url d'un flux rss.
    je voulais faire la chose suivante, avoir une classe MkItem qui contiendrais les différents attributs d'un article:
    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
     
    package mkrss;
     
    public class MkItem {
    	//adresse du flux rss
    	String fluxrss;
    	//titre
    	String titre;
    	//description
    	String description;
    	//adresse de l'article
    	String url;
     
    	/**Constructeur**/
    	public void MkItem (String a, String b, String c, String d) {
    		this.fluxrss = a;
    		this.titre = b;
    		this.description = c;
    		this.url = d;		
    	}//Fin de constructeur
     
     
    }//Fin de classe MkItem
    et j'aurais voulu créer un vector de ses Item avec la classe 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
     
    package mkrss;
     
     
    import java.util.*;
     
     
     
    public class MkTree {
    	/**une liste d article pour un flux donnée**/
    	public Vector<MkItem> unoeud;
     
    	/**Constructeur**/
    	public void MkTree(){
    		this.unoeud = new Vector<MkItem>();
    	}//fin du constructeur
     
    	/**Ajoute un element a la liste**/
    	public boolean ajouter(MkItem f)throws Exception
        {
            this.unoeud.add(f);
            return true;
        }//fin de ajouter
     
    	public void affichevect() {
    		 for(int i=0; i < unoeud.size(); i++)
    	            if(unoeud.elementAt(i) != null)
    	                System.out.println("vect[" + i + "] : " +
    	                		unoeud.elementAt(i).getClass().getName() + " --> "
    	                              + unoeud.elementAt(i));
    	}//fin de affichelist
     
     
    }//fin de MkTree

    Or, je ne sais pas si j'ai correctement créé mon vecteur et si je l'ai correctement initialisé dans mon main.
    Dans mon premier post vous avez vu que je peux le lancer correctement mais lorsque je veux rajouter un élément à la liste, j'ai l'erreur décrite dans mon premier post.

    Merci votre aide.

    @+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    après avoir utiliser l'outil debug sous eclipse, il semble que lorsque je crée rssvct dans le main il retourne une valeur NULL. Mais pourquoi???

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    ça marche j'ai due rajouter :
    rssvct.MkTree();
    tout de suite lors de la déclaration de rssvct dans mon main, mais je ne vois pas pourquoi, quelqu'un aurait une explication??

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par kaelem
    ça marche j'ai due rajouter :
    rssvct.MkTree();
    tout de suite lors de la déclaration de rssvct dans mon main, mais je ne vois pas pourquoi, quelqu'un aurait une explication??
    La raison est simple. En fait, tu n'avais pas défini de constructeur par défaut pour ta classe MkTree, il est donc généré automatiquement par le compilateur étant donné qu'il n'y avait pas d'autre constructeur défini dans la classe.
    En déclarant ceci dans ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**Constructeur**/
    	public void MkTree(){
    		this.unoeud = new Vector<MkItem>();
    	}//fin du constructeur
    tu ne déclares par un constructeur, car un contructeur n'a pas de type de retour, et là en le déclarant void, tu obtiens une autre méthode qui porte le même nom qu'un contructeur mais qui n'en est pas un.
    C'est ce qui explique aussi pourquoi tu avais un NullPointerException, parce que dans le constructeur généré par le compilateur, le Vector n'est pas initialisé, il reste null. Ton constructeur doit donc être sans void :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**Constructeur**/
    	public MkTree(){
    		this.unoeud = new Vector<MkItem>();
    	}//fin du constructeur
    SCJP 5 / SCBCD 1.3 Certified

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup pour ton aide, yun pote m'as dit la même chose.
    Je peux donc désormais sur ce forum enc as de problème la prochaine fois.


    @+

Discussions similaires

  1. [gsoap] Problème avec les std::vector
    Par LePhasme dans le forum SL & STL
    Réponses: 1
    Dernier message: 25/04/2006, 11h46
  2. probleme avec la classe vector
    Par elekis dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2006, 16h25
  3. [PHPMailer] problème avec la classe phpmailer
    Par sansouna24 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/04/2006, 16h51
  4. Problème avec la classe Calendar
    Par afrikha dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/03/2006, 08h48
  5. Réponses: 9
    Dernier message: 25/09/2005, 16h33

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