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 :

Programme indiquant la fréquence de lettre dans un texte ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut Programme indiquant la fréquence de lettre dans un texte ?
    Bonjour, je voudrais créer un programme me permettant de compter le nombre de lettres présentent dans un texte. Pour l'instant j'ai trouvé un programme qui me demande la lettre à compter mais je n'arrive pas à ce qu'il le fasse tout seul pour toutes les lettres de l'alphabet ( ni même pour une seule ). Quoi que je fasse, une erreur apparait ..
    Voilà ce que j'ai trouvé,k et donc où j'en suis :

    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.util.*;
    import java.io.*;
     
    public class Search
    {
     
        public static void main(String[] args) throws IOException
        {
            Scanner inFile = new Scanner(new FileReader("C:\\Users\\user\\Desktop\\text.txt"));
            Scanner s = new Scanner(System.in);
            System.out.println("Which characters would you like to count ? ");
            String key = s.nextLine();
            String character;
            int count=0;
     
            FileWriter fstream = new FileWriter("C:\\Users\\user\\Desktop\\out.txt");
            BufferedWriter out = new BufferedWriter(fstream);
            while (inFile.hasNext())
            {
                character = (inFile.next());
                if(character.equals(key))
                {
                 count++;
                }
            }
            out.write("The number of given characters in text is : " +count);
            out.close();
            System.out.println("The number of given characters in text is: "+count);
        }
    }



    lien : http://www.dreamincode.net/forums/to...in-given-text/

    Merci de bien vouloir m'aider

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pour commencer, tu as besoin d'un tableau pour stocker le compte de chaque lettre. Je rappelle qu'il y a 26 lettres de l'alphabet, ça peut faire une bonne taille de tableau.

    Est-ce que tu peux nous montrer ça ?


    Ah, au fait : le programme que tu nous montres ne compte absolument pas le nombre de fois qu'une lettre apparaît dans un fichier. Sauf si ce fichier est censé ne contenir que des lettres seules séparées par des espaces.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    Je me suis trompé, à la ligne 21 c'est if(character.contains(key)) et les lignes 16,17,26 et 27 sont à supprimer
    et ça marche très bien seulement il faudrait qu'au lieu d'entrer une lettre au clavier, le programme le fasse tout seul pour un a par exemple et je n'arrive pas à le faire car la variable ne correspond pas me dit eclipse, mais si je change le String en char ou charsequence ( à la ligne 13 ), la ligne 20 ne marche plus ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    Ah c'est bon j'ai changé ma ligne 13 en :
    String character ="a";
    Maintenant il faudrait que j'arrive à le faire pour toutes les lettres mais sans copier tout 26 fois ...
    Deuxième problème que je rencontre, les majuscules ou accents ne sont pas pris en compte, je suis obligé de créer un autre String spcécifique pour que cela marche, auriez vous une manière plus simple afin de faire comprendre au programme que tous les a ( A, â, à, etc ) doivent être ^pris en compte ?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par programeurdebutant Voir le message
    Je me suis trompé, à la ligne 21 c'est if(character.contains(key))
    Il ne compte quand même les lettres qu'une seule fois par mot. Dans "ananas" il ne compte qu'un seul a.

    Citation Envoyé par programeurdebutant Voir le message
    Maintenant il faudrait que j'arrive à le faire pour toutes les lettres mais sans copier tout 26 fois ...
    Je t'ai donné un devoir dans mon premier message. Tu dois le faire ou te passer de moi.

    Citation Envoyé par programeurdebutant Voir le message
    Deuxième problème que je rencontre, les majuscules ou accents ne sont pas pris en compte, je suis obligé de créer un autre String spcécifique pour que cela marche, auriez vous une manière plus simple afin de faire comprendre au programme que tous les a ( A, â, à, etc ) doivent être ^pris en compte ?
    Le plus simple est de faire un prétraitement sur chaque mot : mettre tout en minuscules et enlever les accents.

    - Tout mettre en minuscules : pas difficile de trouver la méthode toLowerCase().
    Mais en fait je recommande de lui donner une Locale en paramètre pour éviter les mauvaises surprises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String word = inFile.next();
    word = word.toLowerCase(Locale.US);
    - Enlever les accents : c'est dans la FAQ.
    Compliqué, mais ça marche.

    - Si jamais tu veux aussi gérer les œ et les compter comme un o et un e,
    tu vas devoir changer ça aussi. Avec replace(), ça ira très bien.
    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. Decalage de x lettres dans un texte
    Par Antoinejdu44 dans le forum Débuter
    Réponses: 36
    Dernier message: 17/12/2009, 19h16
  2. Indiquer position ou se placer dans fichier texte
    Par vitch8 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/04/2008, 17h38
  3. [TP] Déterminer la fréquence des voyelles dans un texte
    Par The future scientist dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 19/05/2007, 09h29
  4. nombre de répitation d'une lettre dans un texte
    Par awax dans le forum Delphi
    Réponses: 5
    Dernier message: 15/08/2006, 19h31

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