oncle jules
Messages postés43Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention19 septembre 2005
-
5 août 2005 à 11:26
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 2011
-
5 août 2005 à 11:59
Salut
je crée un nouveau pour ce nouveau dilemme ....
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 ?