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 :

Tableau d'objets, init ?


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut Tableau d'objets, init ?
    Bonjour,

    exposé du pb :
    3 classes
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class1 { int a , double b}
    class2 { int l, double[] y, class1[][] x}
     
    class3{
     
    myObject = new class2();
     
    myObject.l = nb_int;
    myObject.y = new double[nb_int];
    myObject.x = new class1[nb_int][nb_int];
    }
    J'obtiens une erreur "pointeur null", l'erreur se situe sur l'affectation des valeurs à mon myObject.x, je pense à un pb d'initialisation, je suis perdu dans les objets compris dans d'autres objets.

    Merci beaucoup pour votre aide.

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    L'init d'un tableau a plusieurs dimensions ce fait sequentiellement:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Object tab[][] = new Object[10][];
        for (int ind = 0; ind < 10; ind++)
        {
          tab[ind] = new Object[10];
        }

    Voila,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    Merci pour la réponse Bulbo (et pour les balises code java).

    J'ai du mal à comprendre. Ton code permet de créer mais pas d'initailiser. Me trompes-je ?
    Lorque j'essaie d'affecter des valeurs à myObject.x[0][0].a et myObject.x[0][0].b, j'ai l'erreur de "pointeur null"?

    Encore merci.

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Mon code initialise le tableau a 2 dims pour qu'il puisse recevoir des Object (c'etait juste un exmple, utilise le type qui te conviens) mais ne le remplit pas avec des objets.

    Donc si tu accedes a l'element tab[0][0] celui ci est null bien evidemment, a toi de remplir ton tableau apres son init.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    Sincèrement merci pour cette aide et je suis gêné d'insister mais je persiste dans mon erreur de pointeur.
    Ok pour les explications mais il ne s'agit pas d'un simple tableau.

    J'essaie d'affecter une valeur à a et à b d'un objet de la class1.

    1) En reprenant mon code, à partir de la class3, je crée un objet(myObject) de type de la class2.

    2) Initialisation de myObject de tous les membres de la class2, soit l, y et x.

    3) Comme x est un objet de class1, je dois initialiser aussi les membres associés (a et b)?


    Code java : 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
     
    //reprenant tout le code
     
    class1 { int a , double b}
    class2 { int l, double[] y, class1[][] x}
     
    class3{
     
    myObject = new class2();
     
    myObject.l = nb_int;
    myObject.y = new double[nb];
    class1[][] x;
      x = new class1[size1][];
      for(int i = 0; i < x.length; i++) {
          x[i] = new class1[size2];
          for(int j = 0; j < x[i].length; j++){
            x[i][j].index = -1;
          	x[i][j].value = -1;
          }
    }
    //Au final, je dois avoir :
    myObject.l =  une_valeur; // réussi
    myObject.y = une_autre ; // réussi
    myObject.x[i][j].a = encore_une; // pointeur null
    myObject.x[i][j].b = encore_une_autre; // pointeur null

    Encore merci pour cette aide.

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Voila un code qui marche:

    Code java : 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
     
    class1 { int a , double b}
    class2 { int l, double[] y, class1[][] x}
     
    class3{
     
    myObject = new class2();
     
    myObject.l = nb_int;
    myObject.y = new double[nb];
    class1[][] x;
      x = new class1[size1][];
      for(int i = 0; i < x.length; i++) {
          x[i] = new class1[size2];
          for(int j = 0; j < x[i].length; j++){
            x[i][j] = new class1(-1, -1);
          }
    }

    Lorsque tu fais new class1[size2] tu ne crees pas size2 objet de type class1, tu reserves la place pour size2 objets mais ils ne sont pas crees.
    Donc si tu fais sur cette place reservee un ".index" tu te prends une null pointer ce qui est normal.
    Si j'ai bien cerne ton code, l'exemple ci-dessus est ce que tu aurais du faire

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

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

Discussions similaires

  1. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 21h45
  2. Tableau d'objets
    Par moulefrite dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 14h14
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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