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