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 :

[Débutant] Problème de création et de remplissage de tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut [Débutant] Problème de création et de remplissage de tableau
    Rebonjour à tous !

    Je viens de parcourir la FAQ et j'ai fait une recherche sur le forum mais je suis toujours aussi perdue.

    Je voulais savoir s'il était possible d'utiliser l'astuce d'agrandissement de tableau à l'intérieur d'une boucle while.

    En fait, j'ai une boucle while et à chaque itération, je crée un item que je stocke dans un tableau d'item. Je le remplis en faisant :

    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
     while (iterTacheSchedule.hasNext()) {
                 TacheSchedule tacheSchedule = (TacheSchedule) iterTacheSchedule.next();    
     
       TacheRapportItem[] tacheRapportItem = new TacheRapportItem[i+1];
     System.arraycopy(tacheRapportItem,0,tacheRapportItem,0,tacheRapportItem.length);
     
                 /*Création de l'item*/
                 item = new TacheRapportItem();     
                 item.set(...)
     
                /*Insertion de l'item au rang i*/
                tacheRapportItem[i]=item;           
                 i++;
     
               }
    Cependant, je n'obtient pas de tableau rempli à la fin, c'est comme si cette boucle créait un nouveau tableau à chaque fois.

    Comment faire pour avoir mon tableau plein à la fin ? Je sens que je suis proche mais je suis perdue là !

    PS : Je ne peux pas passer par autre chose que des tableaux car je suis tenue d'avoir un tableau en sortie, pour afficher mon résultat dans une listControl.

    Merci de votre aide les gens !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    Tu à l'impression de créer un tableau à chaque fois car tu crée un bouton à chaque fois

    La raison : ton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TacheRapportItem[] tacheRapportItem = new TacheRapportItem[i+1];
    est dans la boucle while

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Oui je suis d'accord avec toi !
    Mais si j'ai bien compris la commande, elle permet de créer un nouveau tableau à partir de l'ancien. Sauf que mon nouveau tableau ne récupère pas les données de l'ancien...oulà, il me semble que je suis pas très claire sur le coup !

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Le problème vient d'ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TacheRapportItem[] tacheRapportItem = new TacheRapportItem[i+1];
    System.arraycopy(tacheRapportItem,0,tacheRapportItem,0,tacheRapportItem.length);
    Dès la première ligne tu affectes un nouveau tableau à tacheRapportItem, du coup les données sont perdues (et dans la deuxième ligne tu copie le nouveau tacheRapportItem[] dans lui-même ce qui n'a aucun intérêt).

    Si tu utilise Java 5 je te conseille d'utiliser une List<tacheRapportItem> puis la methode <T> T[] toArray(T[] a) pour récupérer un tableau.
    Sinon tu peus toujours passer par un tableau temporaire ([troll inside]ou bien passer à Java 5 [/troll inside]).

    Et aussi pour bien te former tu peux lire les cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Essaye un truc comme ceci
    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
     
    TacheRapportItem[] tacheRapportItem = new TacheRapportItem[i];
    //rempli ton tableau comme tu veux 
    while (iterTacheSchedule.hasNext()) {
                 TacheSchedule tacheSchedule = (TacheSchedule) iterTacheSchedule.next();    
     
       TacheRapportItem[] tacheRapportItemTmp = new TacheRapportItem[i+1];
       System.arraycopy(tacheRapportItem,0,tacheRapportItemTmp,0,tacheRapportItem.length);
       tacheRapportItem = tacheRapportItemTmp ;     
                 /*Création de l'item*/
                 item = new TacheRapportItem();     
                 item.set(...)
     
                /*Insertion de l'item au rang i*/
                tacheRapportItem[i]=item;           
                 i++;
     
    }
    EDIT : grillé

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Rhooo merci e1lauren !!!
    Ca a marché du tonnerre, tu m'enlèves une grosse épine du pied ! A force de poser mes questions, peut être que j'arriverai seule à résoudre mes problèmes à l'avenir !
    Merci à tous !!! Je vous aime !!!

  7. #7
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Mais de rien
    Sinon effectivement tu peux faire une List<tacheRapportItem> si tu as Java5 mais bon si c'est scolaire et que tu es obligé de faire avec un tableau ...
    Tu peux aussi passer par une ArrayList si tu change souvent la taille de ton tableau.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2011, 14h48
  2. [Débutant] Problème de création d'objet (ActiveX))
    Par Mat32 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 02/06/2011, 15h00
  3. [JSF + EJB3] débutant, problème à la création
    Par MaxLaMenaX dans le forum JSF
    Réponses: 2
    Dernier message: 18/06/2009, 14h13
  4. Réponses: 1
    Dernier message: 22/01/2009, 11h23
  5. [Delphi 2005] Débutant avec problème de création de fichier
    Par Patcdc dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/06/2005, 18h41

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