Salut à tous
j'ai créé un nouveau post 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.
La compilation se lance sans erreur. Mais lorsque je passe à l'éxécution tout se passe comme si c'était une boucle infinie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 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
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
Partager