Extraction des lignes d'un fichier txt dans un tableau

ssss -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

mon probleme c'est d'extraire les lignes de mon fichier txt dans un tableau pour pouvoir les traiter apres .
mon fichier txt comprend une suite de regle dont la structure est la suivante
<regle> si <premisses> alors <conclusion>
j'ai fai un code qui separe les premisses seules et il les affiche sur la console .
mais je veux que les premisses extraites seront stockeés dans un tableau :
exemple: R1 si a, b alors c
mon code m'affiche sur la console :
a
b
je veux les stocker maintenant dans un tableau comment puis je faire ?



voici mon code de separation des premisses:




public  Vector  premisses(String regle){
       // regle="R1a&b=>d";
       String   prem =regle.split("=>")[0];
       regle=regle.substring(3,prem.length());
     Vector V=new Vector() ; 
    String    TAB[]=regle.split("&");
   for (int i=0;i< TAB.length;i++)
     V.add(TAB[i]);
       return V ;
  }
public static void main(String[] args) {
      
      try{
          
InputStream flux=new FileInputStream("sirine1.txt"); 

InputStreamReader lecture=new InputStreamReader(flux);
BufferedReader buff=new BufferedReader(lecture);
String ligne  ;

while ((ligne=buff.readLine())!=null){
    //ligne=buff.readLine();
    
   code v=new code();
   
  // Vector s=v.premisses("R1.a&b&h=>d");
   Vector s=v.premisses(ligne);
  for (int i=0;i<s.size();i++)
  {System.out.println(s.get(i));}
  
}
   }
catch (Exception e){
System.out.println(e.toString());
}
      
  
}
}
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
La classe Vector ne devrait être utilisée que dans des contextes thread safe, dans tous les autres cas il faudrait les remplacer par des listes.

De plus tu dis que tes regles sont de la form "R1a&b=>d" mais tu fais un substring(3) alors que ça devrait être un substring(2), ou alors il manque quelque chose entre 1 et a.

Ton code se simplifie énormément :

public static List<String> premisses(String regle)
{
    return Arrays.asList(regle.substring(2,regle.indexOf("=>")) .split("&"));
}

public static void main(String[] args) throws FileNotFoundException
{
    Scanner sc = new Scanner(new File("sirine1.txt")); 
	
    while (sc.hasNextLine())
        System.out.println(premisses(sc.nextLine()));
	
    sc.close();
}

Après qu'est-ce que tu veux récupérer dans un tableau ? Toutes les prémisses du fichiers ?

Tu peux faire comme ça (mais le tableau n'est pas la meilleure solution)

public static void main(String[] args) throws FileNotFoundException
{
    TreeSet<String> set = new TreeSet<String>();
	
    Scanner sc = new Scanner(new File("C:/sirine1.txt")); 
		
    while (sc.hasNextLine())
        set.addAll(premisses(sc.nextLine()));
	
    sc.close();
	
    System.out.println(set);

    String[] tableau = set.toArray(new String[set.size()]);
}
0