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

Entrée/Sortie Java Discussion :

Tracer une courbe en fonction des valeurs dans un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut Tracer une courbe en fonction des valeurs dans un fichier
    Bonjour,

    je suis entrain de développer un logiciel en Java sous Eclipse.

    J'ai des fichiers de ce type avec un nombre de ligne qui varie d'un fichier à l'autre:
    Code :

    "15/02/2012",16,17.0,3.6
    "18/02/2012",5,7.4,2.5
    "18/02/2012",12,7.6,2.5
    ...

    J'ai essayé 2 méthodes mais je ne suis pas arrivé à m'en servir correctement :
    - tokenizer
    - split

    Pour tokenizer :
    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
    private int kTest = 0;
    private String bufferComplet[] = new String[30000];
     
    public String[] lire(String path)  {
     
    	    String ligne = "";
    	    String buffer[] = new String[19];
     
    	    try {
    	    	BufferedReader br = new BufferedReader(new FileReader(path));
    	    	ligne = br.readLine();
    	        StringTokenizer st = new StringTokenizer(ligne, ",");
     
    	        while ((ligne = br.readLine()) != null) {
    	            while(st.hasMoreTokens()){
     
    	            	bufferComplet[kTest] = st.nextToken();
    		        System.out.println("buffer " + kTest + " : " + bufferComplet[kTest]);
    	            	kTest++;
    	            }
    	        }
    	        br.close();
    	    }
    	    catch (Exception e){
    	    e.printStackTrace();
    	    }
    	    return bufferComplet;
    	 }
    Avec ce code (tokenizer), je récupère à chaque fois la première ligne sans passer à la suivante.

    Avec split :
    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
    31
    32
    33
    34
    35
    36
    37
    public String lire02 (String path) 
    	{
    			int FIN_LIGNE = 19;
    			StringBuilder sb = new StringBuilder();
    			try{
    				BufferedReader buff = new BufferedReader(new FileReader(path));
    				try {
    					String line;
    					while ((line = buff.readLine()) != null) {
    						sb.append(line).append(FIN_LIGNE);
    						count ++;
    					}
    				} 
    				finally {
    					buff.close();
    				}
    			} 
    			catch (IOException e) {
    				e.printStackTrace();
    			}
    			return sb.toString();
    	}
     
    public String[] lire (String path) {
     
    			String buffer = lire02(path);
    			String[] lignes = buffer.split("\n");
     
    			String[] elements = new String[30000];
     
    			for(int i=0 ; i<count * 19 ; i++)
    			{
    				elements = lignes[i].split("\\,");
    				System.out.println("elements :" + elements);
    			}
    			return lignes;
    	}
    Avec split, rien ne marche. J'obtiens cette erreur :
    java.lang.ArrayIndexOutOfBoundsException : 1

    Si vous savez comment faire avec une des deux méthodes ou autrement, je veux bien de l'aide.

    Bonne soirée.
    Merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    - méthode 1 :

    Il faut construire un StringTokenizer à chaque ligne, à l'intérieur de la boucle, évidemment. À quoi ça rime d'en construire un juste sur la première ligne ? Il va les sortir d'où, les autres lignes ?

    - méthode 2 :

    Et si tu faisais un System.out.println(buffer) pour voir à quoi ressemble ce buffer que tu as construit ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    Merci, ça marche avec la première méthode.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2013, 15h35
  2. [Débutant] Charger des données et tracer une courbe en fonction de ces données
    Par nilsmatlab dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 31/05/2011, 15h34
  3. Réponses: 0
    Dernier message: 27/01/2010, 18h04
  4. Réponses: 2
    Dernier message: 13/12/2007, 15h02
  5. cocher une case en fonction des valeurs sur plusieurs plages
    Par flyfranky dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/11/2007, 10h20

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