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 :

Problème de retour à la ligne. Lecture fichier.


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Problème de retour à la ligne. Lecture fichier.
    Bonjour
    Je fais actuellement des classes qui me permettraient de lire un fichier texte de toutes les manières possibles (ligne par ligne, caractère par caractère, mot par mot etc...). Mais j'ai un léger problème avec la lecture mot par mot.
    Voici le code que j'ai fait:
    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
     
        public String readWordByWordUntil(int wordnumber) throws IOException {
    	int numberOfWords = 0;
    	String s = "";
    	Character c = 'a';
     
    	while (numberOfWords != wordnumber) {
    	    s = "";
    	    c = 'a';
    	    while (c != ' ') {
    		c = (char) reader.read();
    		s = s + c;
    	    }
    	    numberOfWords++;
                        //if the string is null: end of the file then exit
    	    if (s == null)
    		break;
    	}
    	return s;
        }
    Le problème est que dès qu'il y a des retours à la ligne, le programme prend le mot avant le retour à la ligne et le mot après pour un seul mot, puisqu'ici, ce qui fait avancer d'un mot est un espace entre les mots.
    J'ai essayé d'ajouter à ma deuxième boucle: || c != '\n', mais celà ne semble pas être la solution, on dirait que cela en fait une boucle infinie car ça fait tourner le processeur à fond sans s'arrêter.
    Y a-t-il moyen en java de considérer le retour à la ligne dans un fichier comme un caractère?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut
    Il me semble qu'il faut faire un et de tes deux conditions.
    Tu as un nouveau mot si tu rencontres un espace OU une nouvelle ligne. Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(!(c == ' '|| c == '\n'))
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(!c == ' '&& c != '\n')
    Toi tu testes si ton caractère est soit différent de l'espace, soit de la nouvelle ligne. Ce qui est toujours vrai car un caractère ne peut pas être les deux en même temps...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Oups... quelle honte
    Désolé d'avoir dérangé pour si peu... :s
    Et merci

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Deux choses qui n'ont rien à voir avec ta question, mais qui vont considérablement améliorer les performances :
    1. ne jamais utiliser String pour faire de la concaténation. Il faut plutôt utiliser StringBuffer et ses méthodes "append". En effet, utiliser "+" avec les String revient à créer de nouveaux objets à chaque fois.
    2. Ne pas utiliser Character dans ton cas. Il y a un "new" à chaque fois par "auto-boxing". Utilise à la place le type de base "char".

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci, ça va m'être utile

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2015, 16h55
  2. Problème de retour à la ligne dans un fichier texte
    Par Pedrozito dans le forum MATLAB
    Réponses: 4
    Dernier message: 14/04/2008, 16h46
  3. Réponses: 3
    Dernier message: 16/08/2006, 18h32
  4. Problème de retour à la ligne
    Par AurelBUD dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 30/05/2006, 16h17
  5. [MySQL] problème de retour à la ligne.
    Par NPortmann dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/09/2005, 15h43

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