oncle jules | Salut à tous un dimanche après midi à nice et moi je fais du java Je programme un soft qui récupère des données dans un fichier et les réécrit dans un second fichier avec quelques modifications. Voici un extrait du fichier que je dois lire. 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+0 ....
Voilà où j'en suis. J'ai récupéré la première valeur de la seconde ligne (5520 en rouge gras) car elle code un peu plus loin le fichier.
Jusque là pas de problèmes.
Premier problème : je souhaite ensuite aller directement au suivant 5520 (rouhe gras aussi, de la 13ème ligne) ce n'est pas toujours la 13ème ligne ...
comment de faire une boucle genre while qui lit tous les token jusqu'à arriver au token "5520".
Deuixème problème: une fois que je suis au niveau du deuxième 5520 du fichier. je dois réécrire toutes les valeurs qui suivent avec la modification suivante : je dois intervertir les valeurs deux à deux. Autrement dit, la deuxième valeur devient la première, la première devient la seconde. La troisième devient la quatrième valeur et la quatrième devient la troisième et ainsi de suite...
je pensais en fait créer un vecteur comportant toutes les valeurs de deux lignes. J'aurais donc un vecteur de 6 éléments et donc pour l'écriture ce sera plus simple de travailler avec les indices. et je fais une boucle avec cette idée jusqu'a la fin du fichier.
NB: le nombre de valeurs est un nombre pair Voici le code que j'ai commencé (pas grand chose)
j'ai juste récupérer le 5520
Code :
- public void parse_vvp4() {
- int NVProp;
- Vector valeur = new Vector(6);
- String valeur1 = "";
- BufferedWriter bw;
- try {
- FileReader f_r = new FileReader(f_atila);
- StreamTokenizer st = new StreamTokenizer(f_r);
- BufferedReader br = new BufferedReader(new FileReader(f_atila));
- int moment = 0;
- st.wordChars('0', '9');
- st.wordChars('-', '-');
- st.wordChars('.', '.');
- st.wordChars('+', '+');
- for (int i=0; i<6; i++) {
- st.nextToken();
- }
- st.nextToken();
- NVProp = (int)st.nval;
- System.out.println(NVProp);
- st.nextToken();
- //System.out.println(st.nval);
- while (st.nextToken() != StreamTokenizer.TT_EOF) {
- switch (moment) {
- case 0:
- if (st.nval == NVProp) {// NE MARCHE PAS
- //System.out.println(st.nval);
- JOptionPane.showMessageDialog(null," NVProp",
- "Erreur",JOptionPane.ERROR_MESSAGE);
- moment = 1;
- break;
- }
- else {
- moment = 0;
- JOptionPane.showMessageDialog(null,"NVProp else",
- "Erreur",JOptionPane.ERROR_MESSAGE);
- }
- }//fin switch
- }//fin while
- }//fin try
- catch (Exception ex) {
- JOptionPane.showMessageDialog(null,
- "Erreur lors de la lecture vvp2 du fichier " +
- f_atila.getName(),"Erreur",JOptionPane.ERROR_MESSAGE);
- System.exit(0);
- }
- }//fin parse_vvp4
|
Merci beaucoup pour votre aide |