Capture d'un entier

Capture d'un entier - Java - Programmation

Marsh Posté le 11-08-2005 à 17:16:37    

Salut à tous.   :)  
J'implémente un soft qui parse les données d'un fichier pour les réécrire dans un second fichier avec quelques modifications.
Voici un extrait du fichier à parser.
 
[#ff1c00]11 3 32 0 7 40  
[#1c00e2]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
-0.2703143358230591E+00 0.4559299945831299E+01-0.7672241926193237E+00
0.4537451267242432E+01-0.7189077734947205E+00 0.4514544963836670E+01
-0.6711576581001282E+00 0.4490724086761475E+01-0.6236515641212463E+00
0.4465955257415772E+01-0.5764250159263611E+00 0.4178462982177734E+01[/#ff1c00][/#ff1c00]
 
 
Je veux stocker la première valeur (un entier, 5520) de la seconde ligne car elle code le fichier.  
J'ai donc défini un BufferedReader reader ...  
J'ai sauté la première ligne avec un readLine() sans stocké sa valeur.  
Je suis donc à présent sur la seconde ligne.  
Naïvement, j'ai pensé qu'écrire  
 
int num;  
num=reader.read();  
 
capturerait le 1er caractère autrement dit le 1er entier qui m'intéresse; hélas ce n'est pas le cas. J'ai affiché ce que ces lignes capturaient réellement : il s'agit du 3ème entier de la 1ère ligne (32)  
 
Je ne vois vraiment pas pourquoi il me prend la 3ème valeur de la 1ère ligne alors que je l'ai sauté ... enfin je pense  
De plus j'ai essayé d'enlever le 1er readLine() et d'en rajouter pour voir si c'était toujours le cas, et c'est effectivement toujours le cas.  
  :??:  :whistle:  :fou:  :cry:      
 
voici le code  
 
public String parse_vvp3() {  
   String tmp3 = "";  
   int num;  
   try {  
BufferedReader br = new BufferedReader(new FileReader(f_atila));  
BufferedWriter bw;  
bw = new BufferedWriter(new FileWriter(f_sysnoise,true));  
br.readLine();br.readLine();br.readLine();br.readLine();  
num = br.read();  
System.out.println(num);  
String numero = new String();  
numero = numero.valueOf(num);  
System.out.println(numero);  
br.readLine();  
while ((tmp3 = br.readLine()) != null) {  
 tmp3 = br.readLine();  
 bw.write(tmp3 + "\r" );  
  if ( (tmp3 = br.readLine()).startsWith("5520" )) {  
  System.out.println("thales" );  
  br.close();System.exit(0);  
 }  
}  
br.close();    
   }//fin try  
   catch (Exception ex) {  
     JOptionPane.showMessageDialog(null,  
      "Erreur lors de la lecture vvp3 du fichier " +  
      f_atila.getName(),  
      "Erreur",  
      JOptionPane.ERROR_MESSAGE);  
   System.exit(0);  
   }  
   return tmp3;  
 }//fin

 
Est-ce que la méthode est appropriée ??
 
Merci pour votre aide  
++  :jap:

Reply

Marsh Posté le 11-08-2005 à 17:16:37   

Reply

Marsh Posté le 12-08-2005 à 10:31:33    

Tu fais un readLine(), là ok, ça passe à la ligne suivante.
la méthode read() sans paramètre retourne un entier et non une String !!!!!!!!!!!!
Ton code est assez confu. Pourquoi ne pas parcourir le fichier ligne ( en stockant de la sorte String ligne=br.readLine() ) et utiliser la classe StringTokenizer pour isoler les différents éléments composant la ligne ?
Un petit tour sur les tutoriels serait bienvenu.
Bon courage.
 

Reply

Marsh Posté le 12-08-2005 à 10:34:47    

Je viens d'exécuter ton code. Il fait exactement ce qui tu lui demandes. Il saute 4 lignes, puis lit le premier caractère (c'est le rôle de BufferedReader.read()), et renvoie le code ASCII 55, c'est-à-dire "7".  :wahoo:


Message édité par Nicolas_75 le 12-08-2005 à 10:38:44
Reply

Marsh Posté le 12-08-2005 à 10:42:27    

Les streams, ça se ferme dans un bloc finally, pas à la fin du try.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed