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 :

Compter les lignes d'un fichier CSV à partir d'une ligne


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Points : 17
    Points
    17
    Par défaut Compter les lignes d'un fichier CSV à partir d'une ligne
    Bonjour à tous,

    J'ai un fichier CSV qui contient un certain nombre de lignes de données.

    le fichier ressemble à cela :

    xxxx zzzzz yyyyy qqqqq
    xxxx zzzzz yyyyy qqqqq
    xxxx zzzzz yyyyy qqqqq
    xxxx zzzzz yyyyy qqqqq
    xxxx zzzzz yyyyy qqqqq GAGNE
    xxxx zzzzz yyyyy qqqqq
    xxxx zzzzz yyyyy qqqqq

    etc....

    Mon objectif est de compter le nombre de lignes à partir de "GAGNE" sachant que la donnée "GAGNE" n'est pas toujours sur la même ligne.
    dans mon exemple je dois donc récupérer le résultat : 2

    Je sais compter les nombre de lignes jusqu'à la donnée "GAGNE" (dans mon exemple 5). grâce au code suivant :

    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
    import java.io.*;
     
    public class Compteur {
     
    	  static public void main(String args[]) throws Exception {
     
     
    		 int count = 0;
        	         String str = "";
     
     
        	 FileInputStream fis = new FileInputStream("c:\\fichier.csv");
        	 LineNumberReader l = new LineNumberReader(       
        	        new BufferedReader(new InputStreamReader(fis)));
        	               int numberLineGAGNE =0;
        	               while ((str=l.readLine())!=null)
        	              {
     
        	    	                 count++;
        	    	                 if (str.contains("GAGNE"))
        	    	                 {
        	    	                	 numberLineGAGNE = count;  
        	    	                 }
     
        	              }
     
        	     System.out.println("Nombre de lignes jusqu'au dernier gagnant " + numberLineGAGNE);
     
    	     }
    }
    Mais maintenant je désirerais compter de 0 à partir de la ligne "GAGNE".
    Quel modification dois-je apporter ?

    Merci....

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Bonjour,

    Que pensez-vous de 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
     
    int nbLignesApresGagne;
    while ((str=l.readLine())!=null)
        	              {
     
        	    	                 count++;
        	    	                 if (str.contains("GAGNE"))
        	    	                 {
        	    	                	 numberLineGAGNE = count;
        	    	                 }
     
        	              }
        	     nbLignesApresGagne = count - numberLineGAGNE;
        	     System.out.println("Nombre de lignes jusqu'au dernier gagnant " + numberLineGAGNE);
        	     System.out.println("Nombre de lignes après gagnant " + nbLignesApresGagne);
     
    	     }

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Points : 17
    Points
    17
    Par défaut
    je pense que l'idée est très bonne mais dans la soustraction

    nbLignesApresGagne = count - numberLineGAGNE;

    le programme me compte toutes les lignes, alors que je ne désire compter que les lignes commençant par "OK;"

    merci pour ta réponse

    je pense que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     count++;
        	    	                 if (str.contains("GAGNE") && str.startsWith("OK;"))
    fonctionnera.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Points : 17
    Points
    17
    Par défaut
    il me semble qu'il y est une erreur dans ton code quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        	    	                	 numberLineGAGNE = count;
        	    	                 }
     
        	              }
        	     nbLignesApresGagne = count - numberLineGAGNE;
    Si numberLineGAGNE = count alors, count - numberLineGAGNE renverra toujours 0

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Essayez plutôt ceci alors :
    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
    int nbLignesApresGagne = 0;
    while ((str=l.readLine())!=null)
        	              {
     
        	    	                 count++;
        	    	                 if (str.contains("GAGNE"))
        	    	                 {
        	    	                	 numberLineGAGNE = count;
                                             nbLignesApresGagne = 0;
        	    	                 } else if (str.startsWith("OK;"))
        	    	                 {
                                             nbLignesApresGagne++;
        	    	                 }
     
        	              }
        	     System.out.println("Nombre de lignes jusqu'au dernier gagnant " + numberLineGAGNE);
        	     System.out.println("Nombre de lignes après gagnant " + nbLignesApresGagne);
     
    	     }

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Si numberLineGAGNE = count alors, count - numberLineGAGNE renverra toujours 0
    Non car count est incrémenté à chaque passage dans la boucle

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Points : 17
    Points
    17
    Par défaut
    exact,

    Je viens de tester ton code et il fonctionne! Merci une nouvelle fois

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/06/2011, 15h50
  2. Script pour insérer une ligne dans un fichier csv
    Par StéphanieB. dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 05/01/2010, 11h19
  3. [CSV] Effacer une ligne dans un fichier CSV
    Par poulepexo dans le forum Langage
    Réponses: 1
    Dernier message: 22/04/2009, 12h12
  4. [CSV] Taille d’une ligne d’un FICHIER
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 22/01/2007, 11h22
  5. Effacer le contenu d'un fichier a partir d'une ligne
    Par localhost dans le forum Linux
    Réponses: 3
    Dernier message: 04/04/2004, 04h47

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