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

Collection et Stream Java Discussion :

Problème de séparateur " " avec une Map


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut Problème de séparateur " " avec une Map
    Bonsoir, je rencontre un petit probleme dans mon code java qui utlisent les Map.
    En effet, ma classe a pour rôle lire un fichier dans la forme est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    37492 5511 1239 38040 9737 
    37492 5511 3356 38040 9737 
    37492 5511 701 4725 
    37492 5511 3320 7497 38345 
    37492 5511 3320 7497 38345    // en rouge les dernier mots
    37492 5511 3320 7497 38345 
    37492 5511 2914 4641 38345 
    37492 5511 6453 38345
    puis elle récupére dans chaque ligne le dernier mot en utlisant le séparateur "espace" afin de calculer le nombre de fois ou il apparait dans le fichier.
    le problème est que ça me retourne un résultat tout à fait éronné. par exemple en regardant le contenu de ma Map, je vois des nombre comme "3" ou "0" alors qu'aucune ligne de mon fichier ne finit avec un tel mot.

    voilà le code:
    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
    52
    53
    54
    55
    56
    class RouteNumber 
     {
          int route_count=0;
          Route_Count rc;
          File file;
     
       public RouteNumber(File f, File file) throws FileNotFoundException, IOException {
     
           this.file=rc.targetFile;
     
            Map< String,Integer> mp=new HashMap <String, Integer>();
     
            InputStream ips=new FileInputStream(f); 
    	InputStreamReader ipsr=new InputStreamReader(ips);
    	BufferedReader br=new BufferedReader(ipsr);
            String ligne="";
            String origin="";
     
       while ((ligne=br.readLine())!=null)     
        { 
                String [] path=ligne.split(" ");
                origin=path[(path.length)-1];
     
            if (mp.containsKey(origin))
            { 
     
                route_count=mp.get(origin);
                route_count=route_count+1;
                mp.put(origin, route_count);
            }
            else
            { 
                mp.put(origin, 1);  
            }
        }
     
            Set s=mp.entrySet();
            Iterator it=s.iterator();
            FileWriter fw = new FileWriter(rc.targetFile);
    	BufferedWriter bw = new BufferedWriter (fw); 
            PrintWriter pr=new PrintWriter(bw);
     
            while(it.hasNext())
            {
     
                Map.Entry m =(Map.Entry)it.next();
                String key=(String)m.getKey();
                int value = (int)m.getValue();
                pr.println(key+":"+value);
                pr.flush();
                System.out.println("as :"+key+", nb :"+value+"");  
            }
     
        }
     
     }
    merci d'avance pour votre aide

  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
    Eh bien, de ce que je peux en voir, ce code ne devrait donner que des résultats qui existent bien dans le fichier.

    Peut-être pourrais-tu nous montrer un court fichier avec lequel ce problème arrive ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut
    En fait j'ai réalisé que le problème ne vient pas du code mais du fichier lui même chose qui n'a rien à voir avec java.
    je m'excuse si je vous ai fait perdre votre temps.
    Si vous voulez supprimez le.

  4. #4
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut
    Bonsoir,
    mon problème persite. à l'exécution, je remarque qu'il y a une ligne où la clé de la map est vide. Voici la sortie de la console qui le montre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    as :10997, nb :16
    as :, nb :208 // la clé as est vide
    as :10998, nb :32
    as :10999, nb :2
    as :22528, nb :17
    as :22527, nb :23
    Il est clair que le problème vient du séparateur qui est entrain de considérer les espaces de fin dans certaines lignes du fichier. J'ai essayé avec trim mais ça ne régle pas le problème.

    Comment faire? merci.

  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
    - Il suffit de faire trim() avant de faire split()
    - Autre possibilité, il existe une méthode split() qui prend un deuxième paramètre. Ça peut servir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut
    ok merci

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

Discussions similaires

  1. problème avec une map
    Par salseropom dans le forum C++
    Réponses: 5
    Dernier message: 07/09/2010, 18h56
  2. Réponses: 4
    Dernier message: 09/05/2006, 10h29
  3. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  4. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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