Bonjour,
Je dois parser un document *.txt
En ce moment je voudrais faire une hashtable dans une hashtable…et j’ai quelques soucis.
Mon document *.txt se présente ainsi :
Code :
- blablablablabla blablablablabla blablablablabla
- TITI
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- +TUTO
- blablablablabla blablablablabla blablablablabla
- TUTU
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- +TATI
- +TUTA
- +TOTU
- blablablablabla blablablablabla blablablablabla
- TOTO
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- TITI
- blablablablabla blablablablabla blablablablabla
- blablablablabla blablablablabla blablablablabla
- +TITI
- blablablablabla blablablablabla blablablablabla
- etc…………
|
Je voudrais donc faire une hashtable « h » où je mettrai en clé « MAJUSCULE » et valeur une hashtable « g »
La hashtable g aurait en clé « + MAJUSCULE » et en valeur blablabla……
J’ai fait comme cela :
Code :
- public static void readThesaurus(String filePath) throws Exception{
- //Je declares mes hashtables:
- Hashtable h = new Hashtable();
- Hashtable g = new Hashtable();
- //lecture du fichier
- BufferedReader bis = new BufferedReader(new FileReader(filePath));
- String lu = bis.readLine();
- // le problème est dans cette boucle:
- while(lu!= null){
- //majuscule principale: si majusucule et si pas de “+” devant: if(lu.equals(lu.toUpperCase())&&(!(lu.charAt(0)+"" ).equals("+" ))){ //alors je le met en clé dans mon hashtable h
- h.put(lu.toLowerCase(),g);
- }
- // + majuscule:si preier caractere est “+”:
- if((lu.charAt(0)+"" ).equals("+" )){
- //alors je le met en clé dans mon hashtable g (en valeur je met rien pour l’instant…
- g.put(lu.toLowerCase(),"" );
- }
- lu = bis.readLine();
- }
- //je ferme le document
- bis.close();
- // boucle (qui marche très bien) pour afficher MAJUSULE: + MAJUSUCLE
- for( Iterator i = h.keySet().iterator(); i.hasNext();){
- String key = (String)i.next();
- System.out.print("\n"+key+ ":" );
- for( Iterator j = g.keySet().iterator(); j.hasNext();){
- String key2 = (String)j.next();
- System.out.print("\n"+"\t"+key2);
- }
- }
- public static void main(String[] a) throws Exception{
- //j’exécute ma méthode pour lister les majuscules du texte
- readThesaurus("le chemindudocument.txt" );
- }
|
Donc j’ai un problème au niveau de l’affichage car il m’affiche la liste des MAJUSCULES avec toutes les +MAJUSCULES
Au lieu d’avoir juste les +MAJUSCULES qui se situent sous les MAJUSCULES
Ce qu’il faut obtenir:
M1 : M1.1, M1.2
M2 : M2.1, M2.2, M2.3
M3 : M3.1, M3.2
Ce que j’obtiens:
M1 : M1.1, M1.2, M2.1, M2.2, M2.3, M3.1, M3.2
M2 : M1.1, M1.2, M2.1, M2.2, M2.3, M3.1, M3.2
M3 : M1.1, M1.2, M2.1, M2.2, M2.3, M3.1, M3.2
Merci d'avance
Message édité par dantes88 le 27-05-2008 à 16:08:54