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

Collection et Stream Java Discussion :

Erreur "java.lang.NullPointerException" dans un ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Femme Profil pro
    Chercheuse en Informatique
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheuse en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Points : 41
    Points
    41
    Par défaut Erreur "java.lang.NullPointerException" dans un ArrayList
    Bonsoir,

    j'ai vu quelques situations impliquant la même erreur, mais les situations sont toujours un peu différentes et je n'ai pas réussi à me dépanner.

    Voici mon 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
     
    	ArrayList []Table = new ArrayList[2]; 
     
     
    	  Table[0].add("ameni"); //pour ajouter quelque chose a la colonne 1
     
    	    Table[1].add("zina");   //idem pour la colonne 2
     
     
    			for(int i=0;i<Table[0].size();i++){
    				System.out.println(Table[0].get(i)); 
    				System.out.println(Table[1].get(i));
     
    			}
     
     
    	}
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonsoir,
    Il y a plusieurs soucis dans ton code.
    Déjà niveau normes Java :
    - un nom de variable commence par une minuscule.
    - tu veux définir quoi? une ArrayList ou un tableau? Car là tu nous fais un mix des deux. Tu utilises un IDE?
    - Dans tous les cas ton souci vient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int i=0;i<Table[0].size();i++){
    Si ce que tu veux utiliser est un tableau, ton parcours se fait de 0 jusque la taille de la première chaine de caractères de ton tableau soit 5 (amina).

    Si tu souhaites utiliser un tableau tu devras déclarer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] tableau = new String[2];
    et tu rempliras ton tableau de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableau[0] = "";
    tableau[1] = "";
    Par contre si tu as une liste tu auras ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ArrayList<String> table = new ArrayList<String>();
    table.add("");
    table.add("");
    Mais bon je pense quand même que tu devrais repartir des bases de Java et de regarder les différents tutos sur ce forum. Et aussi utiliser un IDE, ça te facilitera grandement les choses.
    Et si tu as des questions n'hésite pas à les poser

  3. #3
    Membre du Club
    Femme Profil pro
    Chercheuse en Informatique
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheuse en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Points : 41
    Points
    41
    Par défaut
    Merci pour tes solutions. En fait, j'ai besoin d'un tableau d' ArrayList où je le crée ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList []Table = new ArrayList[2];
    et a chaque fois je veux ajouter des listes a ce tableau comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Table[0].add("11");
      Table[0].add("12");
      Table[1].add("21");
      Table[1].add("22");
    Et enfin je l'affiche avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<Table[0].size();i++){
    				System.out.println(Table[0].get(i)); 
    				System.out.println(Table[1].get(i));
     
    			}
    comment puis je procéde pour resoudre ce problème?
    Merci d'avance.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    Par défaut
    #1 - Solution rapide et mauvaise :

    tu fais en sorte que ton tableau contienne des objets au lieu de contenir des pointeurs null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // déclarer le tableau
    ArrayList[] table = new ArrayList[2];
    // mettre quelque chose dans le tableau au lieu de le laisser vide
    for(int i = 0; i < table.length; i++) {
      table[i] = new ArrayList();
    }
    #2 - Solution sûre :

    Tu oublies ton tableau et au lieu de stocker des Strings dans deux Listes, tu stockes des paires de Strings dans une seule Liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class PaireDeString {
      public final String un;
      public final String deux;
      public PaireDeString(String first, String second) {
        un = first;
        deux = second;
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<PaireDeString> table = new ArrayList<PaireDeString>();
    table.add(new PaireDeString("11", "12"));
     
    // ...
     
    for(PaireDeString paire : table){
      System.out.println(paire.un); 
      System.out.println(paire.deux);
    }
    Note : il y a moyen d'améliorer, mais en réalité ça dépend de ce que tu vas vraiment en faire, de tes trucs. Il y a déjà des objets tout faits pour, mais on va pas deviner lesquels tant qu'on sait pas ce que tu veux.

  5. #5
    Membre du Club
    Femme Profil pro
    Chercheuse en Informatique
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheuse en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par thelvin Voir le message
    #1 - Solution rapide et mauvaise :

    tu fais en sorte que ton tableau contienne des objets au lieu de contenir des pointeurs null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // déclarer le tableau
    ArrayList[] table = new ArrayList[2];
    // mettre quelque chose dans le tableau au lieu de le laisser vide
    for(int i = 0; i < table.length; i++) {
      table[i] = new ArrayList();
    }
    cette solution est la plus adaptable a mon problème. Je vous remercie infiniment.
    En fait, mon problème est comme suit:
    je veux extraire tous les chemins critiques d'un diagramme de GANTT ( un diagramme de gantt presente une solution dans mon problème).
    Un chemin critique d'une solution est un chemin dont la longueur est égale à la longueur de l'ordonnancement et est constitué par des opérations reliées. Reliées c'est-à-dire que la fin de chaque opération soit égale à la date de début de l'opération suivante.
    Il faut que je cherche tous les chemins critiques dans une solution (dans un diagramme de GANTT).
    Donc j'ai pensé a un tableau d'ArrayListe pour qui me permet, si j'ai un choix entre deux noeuds ayant le même date de début, d'ajouter la premier noeuds trouvé ds la liste courante et je recopie le chemin dans une autre liste contenant les même noeuds que la première et avec la deuxième choix ( c'est a dire la deuxième noeuds ayant le meme date de début)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/05/2011, 10h40
  2. erreur compilation java.lang.NullPointerException
    Par muslim1987 dans le forum JDBC
    Réponses: 6
    Dernier message: 26/06/2008, 09h16
  3. Erreur exception java.lang.NullPointerException
    Par geol99 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 20h24
  4. erreur de java.lang.NullPointerException
    Par vince351 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 12h29

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