Comparaison des èlèments de 2 fichiers .txt

Fermé
mannnouu - 17 janv. 2010 à 21:49
 joujou - 21 mai 2013 à 21:25
Bonjour,
j'ai 2 fichiers textes :
1- list_arbre.txt : une seule ligne : a b c
2- treillis.txt : 30 lignes : 1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {b,c,g} {2.1,2.4,2.7}
...
je veux comparer les éléments de la ligne du 1er fichier avec ceux du 3 ème colonne de 2ème fichier c.a.d
a b c avec ( {a,b,d,g} {a,c,e} {b,c,g} ) et mettre résultat de comparaison dans un autre fichier text.

j'ai commencer à résoudre le problème par l'extraction du contenus des fichiers à l'aide des vecteus mais j'étais bloqué par la suite , comment accéder au èlèments du 3ème champ du chaque ligne ?


package Package1;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
import java.util.Vector;


public class class1 {

public static Vector<String> getToken(StringTokenizer st, String l1) {

Vector <String>v = new Vector<String>();
st = new StringTokenizer(l1, " ");

while (st.hasMoreTokens()) {

v.add(st.nextToken());
}
return v;
}

private static Vector<String> lecture(String yfile) {
Vector<String> v = new Vector<String>();

try {
String ligne;
BufferedReader fichier = new BufferedReader(new FileReader(yfile));
while ((ligne = fichier.readLine()) != null) {
if (ligne.endsWith("") & ligne.length() != 0) {
ligne = ligne.substring(0, ligne.length() - 1);
}
v.addElement(ligne);
}
fichier.close();
} catch (Exception e) {
e.printStackTrace();
}
return v;

}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector <String> tab1 = new Vector<String>();
Vector <String> tab2 = new Vector<String>();
System.out.println("Hi ! ");
tab1 = lecture("list_arbre.txt");
tab2 = lecture("treillis.txt");
for (int i = 0; i < tab1.size(); i++) {
System.out.println(tab1.get(i));
}
for (int i = 0; i < tab2.size(); i++) {
System.out.println(tab2.get(i));
}
}


}
A voir également:

3 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
17 janv. 2010 à 22:27
Salut,
je sais pas si j'ai bien compris..mais regarde ce code..peut etre tu peux t'en inspirer:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Main{

public static void main(String[] args) throws FileNotFoundException, IOException {

String myLine = new BufferedReader(new FileReader("c:\\temp\\fich.txt")).readLine();//recupere la ligne de mon premier fichier (ici a b c )
BufferedReader fichier = new BufferedReader(new FileReader("c:\\temp\\feuille.txt"));
String ligne=new String();
while ( fichier.ready()) {//tant que j'ai des lignes
ligne=fichier.readLine().split(" ")[2];//je recupere le 3 eme element du fichier {a,b,c,d} par exemple
ligne=ligne.substring(1, ligne.length() - 1);//je ne garde que a,b,c,d
ligne=ligne.replace(',',' ');//je remplace les , par des espaces
if (ligne.contentEquals(myLine))//je compare....
    System.out.println(ligne);//si c'est bon, j'affiche..
}
fichier.Close();
}
}

@+
2
Bonsoir Chuka;
Merci d'abord pour ta réponse;

j'ai essayé ta proposition mais ce message s'affiche au niveau de cette ligne :
ligne = ligne.substring(1,ligne.length() - 1 ) ;

" Exception in thread 'main' java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.Substring "

j'ai essayé de le corriger mais le message reste tjrs , est ce que vous avez une idée sur cet erreur?
0
mimihh Messages postés 27 Date d'inscription samedi 31 décembre 2011 Statut Membre Dernière intervention 8 février 2014
13 avril 2013 à 03:20
bonsoir
je veux ecirire un programme java capable de reconnaitre les mots composés d'un texte donné. En fait il faut faire une comparaison entre ce texte et un glossaire donné pour pouvoir detecter les mots clés dans le texte en se basant sur le glossaire. pouvez vous m'aidez s'ils vous plait???
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
18 janv. 2010 à 19:13
Salut,
pour tester j'ai pris cela:
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {b,c,g} {2.1,2.4,2.7}
Quand tu debug, t'as quoi comme valeur dans ligne?
Car la en gros il nous dis que ligne=""...ce que crois pas...car chez moi j'ai bien eu le résultat voulu!!;)

0
Bonsoir ,

Merci bien chuka , tu m ' as aidé à résoudre un grand problème pour moi , encore merci .
c'est bon ça marche .
svp chuka je veux que lorsque je trouve un égalité j'affiche seulement le premier champ et le dernier c.a.d
si j'ai
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.1 {1,3,4,10} {e,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {d,g} {2.1,2.4,2.7}

je veux que le résultat soit comme ça : 1.1 {2.1,2.2,2.5}
1.2 {2.4,2.3,2.6}

SVP chuka ;
Merci d'avance;
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
19 janv. 2010 à 07:59
Salut,
peut-etre comme cela..
public class Main{

public static void main(String[] args) throws FileNotFoundException, IOException {

String myLine = new BufferedReader(new FileReader("c:\\temp\\fich.txt")).readLine();//recupere la ligne de mon premier fichier (ici a b c )
BufferedReader fichier = new BufferedReader(new FileReader("c:\\temp\\feuille.txt"));
String[] ligne=new String[4];
while ( fichier.ready()) {//tant que j'ai des lignes
ligne=fichier.readLine().split(" ");
//je recupere le 3 eme element du fichier {a,b,c,d} par exemple
ligne[2]=ligne[2].substring(1, ligne[2].length() - 1);//je ne garde que a,b,c,d
ligne[2]=ligne[2].replace(',',' ');//je remplace les , par des espaces
if (ligne[2].contentEquals(myLine))//je compare....
    System.out.println(lignes[0]+ " "+lignes[3]);//si c'est bon, j'affiche..
}
fichier.Close();
}
}

J'ai pas testé mais tu dois avoir le gros du truc...en fait passer par un tableau de string...
@+
0
Bonsoir chuka ;

Merci bien pour votre aide , vraiment merci .
0
bonjsoir chuka,
voilà, je dispose de 2 fichiers txt dont le contenu est le suivant:

fichier txt 1 qui contient:
A
Z
G
J
U
K
E
B
V
D

ET fichier txt 2 qui contient:
B
U
Z
K
X
V
N
L
M
E

Je voudrais écrire un programme qui me récupère les caractères (lettres) de chaque fichier dans un tableau correspondant (le tableau 1 ET le tableau 2) , pour ensuite traiter les caractères et produire un tableau 3 qui ne contient que les caractères (lettres) en commun entre les deux tableaux es communs dans fichier 2 et nombre d'occurence des caracterdonc:
Z
B
E
K
U
V
0