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'objet à redéfinir à chaque fois ?


Sujet :

Collection et Stream Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut tableau d'objet à redéfinir à chaque fois ?
    Bonjour,

    Imaginons que je veuille créer un arbre binaire en java à l'aide d'un tableau de noeud (chaque noeud est caractérisé par 3 champs : sa valeur, son fils gauche, son fils droit. Pour chaque noeud son fils droit porte une valeur plus grande que lui et son fils gauche une plus petite).

    Donc je commence à créer un noeud comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Noeud {
       int val,g,d ;
    }
    et maintenant je veux créer mon arbre binaire avec un tableau d'entier t
    j'ai vu que pour créer mon arbre à partir de t je devais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Noeud [] TabAbr = new Noeud[t.length]
    donc là je crée un tableau TabAbr de noeud de même longueur que t. OK
    ensuite la chose que je n'ai pas compris c'est qu'à chaque fois que je veux remplir un noeud il fallait que je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabAbr[i] = New Noeud();
    la syntaxe étant la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0 ; i<t.length ; i++){
       TabAbr[i] = New Noeud();
       TabAbr[i].val = t[i];
    }
    mais par définition de TabAbr c'est un tableau de noeud, donc tous ses éléments sont des noeud, donc pourquoi faut-il à chaque fois mettre la ligne TabAbr[i] = New Noeud(); ???? alors que c'est la définition même de TabAbr.
    De plus par défaut quelle sont les valeurs de TabAbr[i].g et TabAbr[i].d ? est-ce 0 ou est-ce vide ????

    merci de vos réponses

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Les tableaux sont créés vides en Java, chacune des case contient null. Si tu fais
    TabAbr[i].val = t[i];
    avant
    TabAbr[i] = New Noeud();
    tu auras une NullPointerException parce que tu essaie d'accéder un objet qui est nul.

    C'est pour ça qu'il faut leurs affecter un objet pour pouvoir les utiliser.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    ah d'accord merci de ta réponse, ça me semblait plus logique que lorsque je faisais :
    Noeud [] TabAbr = New Noeud [] ça affecté un noeud à chacun des éléments du tableau TabAbr.

    Par défaut que contient TabAbr[i].g est-ce NULL ou 0, si je veux vérifier par exemple que je n'ai pas encore défini de fils gauche au noeud i, dois-je regarder si TabAbr[i].g == NULL ou TabAbR[i].g == 0 ?

  4. #4
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par tong_wen Voir le message
    ah d'accord merci de ta réponse, ça me semblait plus logique que lorsque je faisais :
    Noeud [] TabAbr = New Noeud [] ça affecté un noeud à chacun des éléments du tableau TabAbr.

    Par défaut que contient TabAbr[i].g est-ce NULL ou 0, si je veux vérifier par exemple que je n'ai pas encore défini de fils gauche au noeud i, dois-je regarder si TabAbr[i].g == NULL ou TabAbR[i].g == 0 ?
    Comme dis precedement, les elements d'un tableau sont initialisés a null.
    Si tu fais TabAbr[i].g tu aura une nullpointerexception car TabAbr[i] est null.

    Noeud [] TabAbr = New Noeud [] affecte à TabAbr un tableau de Noeud, mais les elements de Noeud sont à null.
    La javaDoc est mon amie, elle est la tienne aussi!

Discussions similaires

  1. [POO] à chaque fois Objet not defined
    Par une_tite_question dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/10/2008, 15h49
  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