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

Java Discussion :

Nommage dynamique de variables dans une boucle


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut Nommage dynamique de variables dans une boucle
    Bonjour,
    Voila j'ai un programme qui trace des histogrammes dont les données sont récupérées dans un fichier texte. Plus on utilise le programme et plus il ya de données dans le fichier texte. Je dois créer un histogramme pour chaque ligne de fichier, et placer chaque histogramme les une en dessous des autres.
    J'ai donc un variable JFreechart qui correspond à un histogramme.

    J'aimerais savoir si je peux créer des variables dynamiquement en fonctions du nombre de lignes de mon fichiers.
    J'ai pensé à la concaténation mais sans succès.

    merci d'avance

  2. #2
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    Tu peux créer une liste de variable et donc à chaque fois que tu rencontre une ligne de ton fichier text tu instancie une variable intermédiaire tu fais avec ton boulot et tu l'ajoute à ta liste.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Tu utilises une hashmap. A chaque création d'une nouvelle variable, au lieu de lui donner un nom dynamique (ce qui est impossible), tu vas lui attribuer une clé (le nom que tu voulais donner à la variable) puis l'ajouter dans ta hashmap.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut
    enfin je me suis lancé dans une autre méthode, j'ai créer une fonction tracer_histogramme que j'appelle a chaque fois que je veux tracer un histogramme.
    j'ai fait ça en pensant qu'il me créer à chaque fois un nouveau histogramme (JFreechart) mais le résultat sur j'obtiens est une série d'histogramme les uns en dessous des autres mais c'est toujours le même histogramme, celui obtenu avec la dernière ligne de données. J'imagine qu'il écrase à chaque fois les precedents c'est pour ça que j'ai que le dernier graphique.

    Dans ma boucle j'appelle à chaque fois ma fonction tracer_histogramme, il devrait bien me créer à chaque fois un nouvel histogramme nan?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 28
    Points
    28
    Par défaut jiddou a raison
    en pseudo-code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<JFreechart> histogrammes = new List<JFreechart>();
     
    while (! finDuFichier) {
     histogrammes.add(new JFreechart(ligneDuFichier));
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut
    quand je mets
    List<JFreeChart> histogrammes = new List<JFreeChart>();
    il me met
    the type List is not generic; it cannot be parameterized with arguments<JFreeChart>
    ce qui voudrait dire qu'on ne peut pas créer de list de jfreechart c bien cela?

  7. #7
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<JFreeChart> histogrammes = new ArrayList<JFreeChart>();

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut
    ok merci par contre après quand je veut ajouter mes jfreechart à ma liste, je tape donc
    histogrammes.add(new JFreechart(ligneDuFichier));
    ligneDuFichier est de type String, et il met comme erreur que le constructeur Jfreechart(String) is undefined

    pour créer un histogramme je fais d'habitude
    JFreeChart barChart = ChartFactory.createBarChart("Cumul de sommeil journalier", "",
    "temps de sommeil", dataset, PlotOrientation.VERTICAL, true, true, false);

    Je ne sais pas trop comment 'syntaxer' tout ça pour que ça marche

  9. #9
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JFreeChart barChart = ChartFactory.createBarChart("Cumul de sommeil journalier", "","temps de sommeil", dataset, PlotOrientation.VERTICAL, true, true, false);
    histogrammes.add(barChart);

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut
    Par contre je dois inclure chaque graphique dans un ChartPanel
    ChartPanel cPanel = new ChartPanel(barChart);
    J'ai essayer en n'en créant qu'un en me disant qu'un Chartpanel pouvait contenir plusieurs JfreeChart , mais apparament non car j'obtient une liste de graphique identique avec les données de la dernière ligne.

    Je suppose que je dois créer également une liste de ChartPanel
    List<ChartPanel> histogrammes_panel = new ArrayList<ChartPanel>();
    J'ai donc dans le while
    while ((ligne=br.readLine())!=null){
    //lecture des données

    dataset.addValue(duree,"","X");


    JFreeChart barChart = ChartFactory.createBarChart("Cumul de sommeil journalier", "","temps de sommeil", dataset, PlotOrientation.VERTICAL, true, true, false);

    histogrammes.add(barChart);

    histogrammes_panel.add(new ChartPanel(barChart));


    pnl.add(histogrammes_panel);

    }
    mais j'ai une erreur dans le ''pnl.add(histogrammes_panel);'', je ne peut pas ajouter de liste dans un panel.


    Je me demande aussi si je ne devrais pas faire une liste de dataset

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 50
    Points
    50
    Par défaut
    sinon ce que j'ai d'essayé de faire c'est de créer une fonction tracer_histogramme et ensuit je l'apelle pour chaque histogramme que ej veux tracer.
    while ((ligne=br.readLine())!=null){

    // lecture dans le fichier

    tracer(dureetot,dataset, pnl);

    }
    public void tracer(int valeur,DefaultCategoryDataset donnees, JPanel panel ){

    //donnees.clear();
    //System.out.println("fonction tracer: " +donnees);

    donnees.addValue(valeur,"","X");

    System.out.println("\ndonnees dans la dataset" +donnees.getValue(0, 0));

    JFreeChart barChart = ChartFactory.createBarChart("Cumul de sommeil journalier",
    "","temps de sommeil", donnees, PlotOrientation.VERTICAL, true, true, false);

    ChartPanel cPanel = new ChartPanel(barChart);

    ajouter(cPanel, panel);


    }

    public void ajouter(ChartPanel a, JPanel b){
    b.add(a);
    }
    et même avec cette méthode il me trace le bon nombre de graphique mais tous identique, avec comment valeur la valeur de la dernière ligne du fichier.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/01/2013, 11h07
  2. [VB.net] Declaration variable dans une boucle for
    Par nico10gbb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/05/2006, 11h45
  3. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  4. Réponses: 3
    Dernier message: 01/09/2005, 11h56
  5. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23

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