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 :

Créer un tableau d'objets


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut Créer un tableau d'objets
    Bonjour à tous,

    Comme il n'y a pas de structure/record en Java, je présume qu'il faut créer une classe minimaliste dès qu'on a besoin de rassembler des types différents dans une «structure» (à moins de faire appel à des Vector ou Hashtables, mais ça sera pour plus tard).

    Lorsque j'essaie ceci ça fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class test {
      public static void main (String[] argv) {
        Cell b = new Cell();
        b.c = 'A';
        b.n = 1;
        System.out.println(b);
      }
    }
    class Cell {
      public char c;
      public int n;
    }
    Par contre si j'essaie de créer un tableau de tels objets, ça se compile, mais donne une erreur de pointeur:

    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
    public class test {
      public static void main (String[] argv) {
        Cell[] b = new Cell[5];
        b[0].c = 'A';
        b[0].n = 1;
        System.out.println(b);
      }
    }
    class Cell {
      public char c;
      public int n;
    }
     
    gv@fantasio:~$ javac test.java 
    gv@fantasio:~$ java test
    Exception in thread "main" java.lang.NullPointerException
            at test.main(test.java:4)
    Où est le problème ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 113
    Points
    113
    Par défaut
    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
    public class test {
      public static void main (String[] argv) {
        Cell[] b = new Cell[5];
        for(int i = 0;i<5;i++){
           //Cell[i] = new Cell(); *siffle*
           b[i] = new Cell();
        }
        b[0].c = 'A';
        b[0].n = 1;
        System.out.println(b);
      }
    }
    class Cell {
      public char c;
      public int n;
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut
    Petite correction au passage

    Citation Envoyé par LeTsIrGoD Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Cell[] b = new Cell[5];
        for(int i = 0;i<5;i++){
           //Cell[i] = new Cell();
           b[i] = new Cell();
        }
    Je retire de ton intervention qu'il a fallu initialiser l'objet pour chaque cellule du tableau. Pourtant, String est aussi une classe et on n'a besoin de l'initialiser quand on fait de même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        String[] s = new String[5];
        s[0] = "Hello";
    Où se situe la différence ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par gvdmoort Voir le message
    Si ça ce n'est pas une initialisation, qu'est-ce que c'est ?

    (Réponse qu'un expert pinailleur donnerait : "ceci est une assignation à l'une des cases du tableau qui, n'ayant pas eu de valeur précédemment assignée, était restée à sa valeur initiale null.")
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Cell[] b = new Cell[5];
        b[0].c = 'A';
        b[0].n = 1;
    Ok, j'ai compris, ici j'assignais des valeurs aux champs
    de Cell, mais Cell lui-même n'avait pas été initialisé.

    Merci,

    G.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/05/2011, 16h41
  2. créer un tableau d'objet
    Par une_tite_question dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2010, 17h16
  3. Créer un tableau de references d'objets
    Par NejNej dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/05/2008, 15h29
  4. Créer un tableau/liste d'objets
    Par TYBO_2 dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2008, 16h25
  5. créer un tableau d'objets
    Par abiraa dans le forum C++
    Réponses: 36
    Dernier message: 15/04/2007, 11h51

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