Lecture dans un fichier

oncle jules Messages postés 43 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 19 septembre 2005 - 5 août 2005 à 11:26
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 - 5 août 2005 à 11:59
Salut
je crée un nouveau pour ce nouveau dilemme ....

11 3 32 0 7 40
5520 1 1 1 5 5
32* COFI v.2 IDEAS v.11 *
07/13/05 VVPR 1 0 0
7 5 20 5 138 0 1 1
40 0.6978044820836787E+10 0.1238774153323844E+11 0.1901403936761112E+11
0.3445260201620660E+11 0.4048589907678004E+11 0.6673256768859634E+11
0.1133983935650789E+12 0.1266392523039663E+12 0.2253733675547690E+12
0.3181668544154566E+12 0.5255469213822878E+12 0.6458133052264467E+12
0.7453467372541699E+12 0.1097179188940539E+13 0.1184914291018450E+13
0.1680306774352798E+13 0.1888042254866058E+13 0.2418814107784721E+13
0.2931585857945411E+13 0.3329695498910833E+13
5520 0.4877913475036621E+01 0.0000000000000000E+00 0.4864388942718506E+01
0.0000000000000000E+00 0.4849582672119141E+01 0.0000000000000000E+00
0.4833709239959717E+01 0.0000000000000000E+00 0.4816733837127686E+01
0.0000000000000000E+00 0.4793504714965820E+01-0.3685846924781799E+00
0.4763874053955078E+01-0.3189862668514252E+00 0.4729751586914063E+01

Voilà où j'en suis : j'ai copié les 5 premières lignes.
A présent je voudrais copié les ligne suivantes du nombre 40 (en gras noir) jusqu'à la ligne qui commence par 5520 (rouge gras) non incluse.
Mon idée est de stocker ce nombre 5520 dans une variable de type string. Je la récupère en fait dès la deuxième ligne (il s'agit du même nombre).
Donc si je récapitule, je copie les 5 premières lignes en stockant le 5520 de la 2ème ligne. Arrivé au niveau de la 6ème ligne je souhaite faire une boucle genre while (jusqu'à trouver le caractère 5520) stocker les lignes avec readLine().
Voici le bout de programme que j'ai fais pour ça.

public String parse_vvp3() {
String tmp3 = "";
String num = "";
int moment = 0;
try {
FileReader f_r = new FileReader(f_atila);
StreamTokenizer st = new StreamTokenizer(f_r);
st.wordChars('0','9');
BufferedReader br = new BufferedReader(new FileReader(f_atila));
br.readLine();


while (st.nextToken() != StreamTokenizer.TT_EOF) {
switch (moment) {
case 0:
if (st.ttype == StreamTokenizer.TT_NUMBER) {
num = "" + (int)st.nval;
JOptionPane.showMessageDialog(null,"Erreur1","Erreur",JOptionPane.ERROR_MESSAGE);
moment = 1;
}
else {
JOptionPane.showMessageDialog(null,
"Erreur2","Erreur",JOptionPane.ERROR_MESSAGE);
}
break;
case 1:
for (int i=0; i<4; i++) {
br.readLine();
moment = 1;
break;
}
moment = 2;
break;
case 2:
while ((tmp3 = br.readLine()) != num) {
tmp3 = br.readLine();
moment = 2;
}
br.close();
break;
}//fin switch
}//fin while
}//fin try
catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"Erreur lors de la lecture vvp3 du fichier " +
f_atila.getName()+num,
"Erreur",
JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
return tmp3;
}//fin parse_vvp3


La compilation se lance sans erreur. Mais lorsque je passe à l'éxécution tout se passe comme si c'était une boucle infinie.
Je pense qu'en fait il ne récupère pas le bon "num" c'est-à-dire le 5520 ......
Qu'en pensez-vous?
La méthode pour récupérer les lignes vous semble-t-elle bonne ?

Mille merci pour votre aide

1 réponse

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
5 août 2005 à 11:59
essaie de remplacer

while ((tmp3 = br.readLine()) != num)

par

while(! ( (tmp3 = br.readLine()) .equals( num ) ) )



le !et le testant les refernces pour les objets et non le contenu.
gmi19oj19
0