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 :

Comment définir un tableau dans une classe?


Sujet :

Collection et Stream Java

  1. #1
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut Comment définir un tableau dans une classe?
    Salut!

    Je cherche à implémenter une classe des arbres généraux simplifiée.
    Pour cela j'ai fait le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    class GTree{
        int value;
        int numberOfNext;
        GTree previous;
        GTree[10] next={null};
     
        GTree(int n){
            value=n;
            previous=null;
            numberOfNext=0;
     
        }
     
        void addNext(int n){
    /**/  next[numberOfNext]=new GTree(n);
    /**/  GTree newTree=next[numberOfNext];
            numberOfNext++;
            newTree.previous=this;
        }
     
        void print(){
            System.out.println(value);
            if(numberOfNext!=0){
                for(int i=0;i<numberOfNext;i++){
    /**/          next[i].print();
                }
            }
     
        }
    }
    Mais, sous Eclipse, j'ai des erreurs: il me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    next cannot be resolved
    aux lignes précédées d'un /**/, c'est à dire partout où j'essaye d'utiliser le tableau "next".
    Le problème est peut être que dans mon contructeur je n'initialise pas next.
    Cela ne me semblait pas necessaire puisque j'ai fait:
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Et si tu essaies avec GTree[] next = new GTree[x];

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Ca marche!

    Pourrait tu m'expliquer?

    Merci.

  4. #4
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par seriousme
    Ca marche!

    Pourrait tu m'expliquer?

    Merci.
    Bah en même temps, c'est la façon dont on déclare les tableaux en java....

  5. #5
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Bah en même temps, c'est la façon dont on déclare les tableaux en java....
    Ah bon. Jamais vu cette syntaxe. J'ai toujours fait:
    C'est spécifique aux tableaux d'objets?

  6. #6
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Dans ta façon de faire tu déclares le tableau et tu l'initialises (le remplis).
    quand tu fais Object[] tab = new Object[10] ; par exemple, tu ne fais que la declaration, tu dis juste j'ai un tableau de 10 objets, mais tu ne dis pas ce qu'il y a dedans. Et non ce n'est pas spécifique au tableaux d'objet tu peux trés le faire avec les types primitifs (int,char,float.....)

  7. #7
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    en déclarant :
    tu définis un tableau de GTree. Pour l'instant, java ne sait pas de combien de cases est composé le tableau.
    Ensuite, en faisant
    tu dis à java que tu veux un tableau contenant 10 GTree. Attention, le fait de faire ca n'instancie pas les 10 GTree de ton tableau, tu devras les instancier manuellement comme ici : (par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i=0;i< next.length;i++)
    {
      next[i]=new GTree();
    }
    J'espere que c'est plus clair pour toi.

    bon courage !

    mavina

  8. #8
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    OK. C'est parce que en C++:
    suffit pour déclarer un tableau de 10 "Object".

    Il n'y a rien d'équivalent en Java?
    En Java TOUTES les déclarations sans initialisation doivent elles se faire avec "new"?

  9. #9
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Oui, toutes instantiations d'objets doit se faire avec un new, sauf par exemple pour les int ou String où tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int chiffre = 6;
    String lettre = "2555";
    Mais là, c'est le compilateur qui rajoute les new par derrière.

    L'équivalent java de Object[10] tab est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] tab = new Object[10];

  10. #10
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Merci de ces explications.

    Je met le tag .

  11. #11
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    @wichtounet:
    l'exemple du int sans new est mal choisi vu que c'est un type primitif et donc pas un objet. Meme si avec java5 on peut passer de l'un a l'autre..mais ceci est une autre histoire

  12. #12
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Scorpyosis
    @wichtounet:
    l'exemple du int sans new est mal choisi vu que c'est un type primitif et donc pas un objet. Meme si avec java5 on peut passer de l'un a l'autre..mais ceci est une autre histoire
    ah ok, autant pour moi alors, je pensais que int passait quand même pas une instanciation en règle

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/06/2008, 16h32
  2. Définir des événements dans une classe
    Par Masmeta dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/04/2008, 17h41
  3. [Tableaux] Gestion tableau dans une classe
    Par lolodev dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2007, 13h19
  4. [Tableaux] Déclaration d'un tableau dans une classe
    Par rochenico dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2006, 11h29
  5. tableau dans une classe
    Par blastmanu dans le forum C++
    Réponses: 6
    Dernier message: 18/04/2006, 14h18

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