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

Langage Java Discussion :

Retrouver le 2ème mot de la ligne 4


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Par défaut Retrouver le 2ème mot de la ligne 4
    Bonjour,

    Je souhaiterai récupérer le 2éme mot de la ligne 4, pour cela je lis le fichier ligne par ligne puis "tokenize" les lignes.

    J'arrive avec mon code,à lire le texte de chaque ligne mais si je cherche le 2éme mot de la ligne 4 il me donne le 2éme mot du texte.

    Avez vous une idée de mon erreur ?

    Cordialement

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import java.io.File;
    import java.io.FileReader;
    import java.io.LineNumberReader;
    import java.util.StringTokenizer;
     
    public class test {
        public static void main(String[] args) throws Exception {               
            File file = null;
            FileReader fr = null;
            LineNumberReader lnr = null;
     
            try {
     
                file = new File("c:\\temp\\test.txt");           
                fr = new FileReader(file);            
                lnr = new LineNumberReader(fr); 
                lnr.setLineNumber(0);
     
                String line = ""; 
                int tok = 0; 	
    	    	String[] var = new String[300];
    	    	int[] num = new int [200];
     
                while (lnr.getLineNumber() <=18 ) {
                line = lnr.readLine();
                StringTokenizer val = new StringTokenizer(line," "); 
                num[tok] = new Integer (lnr.getLineNumber());
    	    	while(val.hasMoreTokens())
    	    	{
    	    	var[tok] = new String(val.nextToken());
    	    	num[tok] = new Integer (lnr.getLineNumber());
    	    	System.out.println("Line Number " + lnr.getLineNumber() + 
                       ": " + line);
    	        tok++;	    	
    	    	}
                }
                System.out.println (num[3]+" "+var[4]) ; 
     
            } finally {
     
                if (fr != null) {
                    fr.close();
                }
                if (lnr != null) {
                    lnr.close();
                }
            }
     
        }
    }

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ben c'est juste que LineNumberReader n'est pas fait pour faire des "sauts" à une ligne donnée, c'est une espèce de numérotation à partir d'un endroit donné... J'avoue que l'intérêt n'est pas évident... surtout pour moi...

    Bref, le plus simple est de faire 4 readLine et tu seras sur la 4ème ligne (qui l'eut cru )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ben c'est juste que LineNumberReader n'est pas fait pour faire des "sauts" à une ligne donnée, c'est une espèce de numérotation à partir d'un endroit donné... J'avoue que l'intérêt n'est pas évident... surtout pour moi...

    Bref, le plus simple est de faire 4 readLine et tu seras sur la 4ème ligne (qui l'eut cru )
    Merci pour ta réponse, mais comment après mes 4 readLine je peux continuer pour lire ma 6 ligne (récupérer le 5ém mot) puis lire la 12ém (recuperer le 3ém mot).

    En effet j'ai plusieurs mots à récupérer sur des lignes différentes

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Soit tu comptes
    Soit tu charges toutes tes lignes dans un objet List<String> et tu traites ensuite... Ceci dit, si tu as des gros fichiers, ça va poser problème...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Par défaut
    Les mots que je recherche sont dans situés dans les 18 preliéres lignes du fichier
    placer le résultat de chaque Tokenize dans un tableau serait efficace ?
    Ainsi pour retrouver le 3ém mot de la ligne 5 il suffirait de récupérer la valeur de ligne 3 colonne 5 ?
    Attention lorsque je dis "suffirait" cela ne veux surtout pas dire que cela met facile, bien au contraire je ne sais pas comment faire, je n'ai pas de connaissance sur les tableaux encore moins sur placer des mots dans un tableau à plusieurs colonnes.

    Si vous avez des pistes ou des exemples j'en serais ravis.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si tu ne traites que les 18 premières lignes, la solution de passer par une List peut être utile. Du coup, d'après ce que tu dis, tu pourrais passer par une List<String[]>, il suffirait de faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int i = 0;
    List<String[]> list = new ArrayList<String[]>();
    while ((line = reader.readLine()) != null)
    {
       list.add(line.split(" ")); <-- on coupe les mots sur blanc
       if (++i == 18) break;
    }
    ... // ensuite ton traitement de recherche...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. remplacer un mot dans une ligne
    Par italiasky dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 08/04/2007, 19h19
  2. extraire le dernier mot de chaque ligne
    Par bezoindaidde dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 28/03/2007, 07h47
  3. [c] Lire un mot choisi par ligne
    Par lutin06 dans le forum C
    Réponses: 2
    Dernier message: 02/03/2007, 13h30
  4. Chercher des mots dans une ligne
    Par chemouz dans le forum C++
    Réponses: 1
    Dernier message: 17/12/2005, 12h42
  5. [LDAP]modification du mot de passe - ligne de commande
    Par sangei dans le forum API standards et tierces
    Réponses: 24
    Dernier message: 01/12/2005, 14h49

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