probleme java et tokenizer

probleme java et tokenizer - Java - Programmation

Marsh Posté le 13-12-2007 à 10:47:05    

Bonjour,
alors voila, la j'ai un probleme que je ne sais pas resoudre, mais alors pas du tout (bon en meme temps jsuis débutant..)
Je fais un programme pour décomposer un fichier, et utiliser ses données.
Donc en fait j'ai un fichier de terrains, avec formes, dimensions, lieu ou ils se trouvent avec des references de proprietaires;
Ensuite j'ai un fichier avec les tarifs du metre carré selon le lieu.
Le but est d'afficher les biens de chaque proprietaire sachant que un mm proprietaire peut avoir plusieurs terrains dan sdifferents lieux.
Bref tout va bien, le proramme s'execute sans probleme,mais quand je demande de l'afficher, il m'affiche deux fois le meme proprietaire et m'en oublie un...(avec la premiere fois la bonne surface et la seconde, la surface de celui qui manque )
donc je ne sais pas comment faire.
J'ai essayé de localiser le probleme, on dirait qu'il ne lit pas le proprietaire manquant...
donc concernant les proprio ca donne:
reference forme, dimension1 dimension 2 Lieu
P231 C 12.75 0 Colmar
S304 R 15 20 1Obernai
P231 C 20 0 Barr
S104 R 57.5 52.35 Strasbourg
S442 T 23 32.60 Mulhouse
P231 C 21 0 Nancy
S442 R 73.25 37.10 Paris
P211 T 69.50 55.40 Laval
P231 C 61 0 Poitiers
 
et le programme:
 
import fr.insa.goepp.Lire;
import java.io.* ;
import java.util.* ; // pour StringTokenizer
 
public class Decompose_Chaine
{ public static void main (String args[]) throws IOException
{ String forme, lieu, lieu2,reference ;
int i,j,initialisation=0,c=0,posmini=0;float Dim1, Dim2, Prix;
double S=0,patri=0,P=0;
boolean ajouter, permute;
Proprietaire[]p=new Proprietaire[100];
BufferedReader entree1 = new BufferedReader (new FileReader ("terrains.txt" )) ;
while (true)
{ String ligneLue = entree1.readLine() ;
if (ligneLue == null) break ;
StringTokenizer k = new StringTokenizer (ligneLue, " " ) ;
reference=k.nextToken();
ajouter=true;
if(initialisation==0){
p[0]=new Proprietaire(reference,0);
initialisation=1;
c=++c;
}
 
else{
for(i=0;i<c;++i){
if(reference.equals(p[i].reference)){
ajouter=false;
}
}
if(ajouter=true){
p[c]=new Proprietaire(reference,0);
++c;
}
}
}
entree1.close(); //APPAREMENT CA BUGGE ENTRE LE DEBUT ET LA
 
Si vous avez une idee, je suis preneur.
Merci d'avance de vos réponses
vinc

Reply

Marsh Posté le 13-12-2007 à 10:47:05   

Reply

Marsh Posté le 13-12-2007 à 11:05:19    

pour gagner un peu en lisibilité :

 
Code :
  1. import fr.insa.goepp.Lire;
  2. import java.io.* ;
  3. import java.util.* ; // pour StringTokenizer
  4.  
  5. public class Decompose_Chaine {
  6.     public static void main(String args[]) throws IOException {
  7.         String forme, lieu, lieu2, reference;
  8.         int i, j, initialisation = 0, c = 0, posmini = 0;
  9.         float Dim1, Dim2, Prix;
  10.         double S = 0, patri = 0, P = 0;
  11.         boolean ajouter, permute;
  12.         Proprietaire[] p = new Proprietaire[100];
  13.         BufferedReader entree1 = new BufferedReader(new FileReader("terrains.txt" ));
  14.         while (true) {
  15.             String ligneLue = entree1.readLine();
  16.             if (ligneLue == null)
  17.                 break;
  18.             StringTokenizer k = new StringTokenizer(ligneLue, " " );
  19.             reference = k.nextToken();
  20.             ajouter = true;
  21.             if (initialisation == 0) {
  22.                 p[0] = new Proprietaire(reference, 0);
  23.                 initialisation = 1;
  24.                 c = ++c;
  25.             } else {
  26.                 for (i = 0; i < c; ++i) {
  27.                     if (reference.equals(p[i].reference)) {
  28.                         ajouter = false;
  29.                     }
  30.                 }
  31.                 if (ajouter = true) {
  32.                     p[c] = new Proprietaire(reference, 0);
  33.                     ++c;
  34.                 }
  35.             }
  36.         }
  37.         entree1.close(); // APPAREMENT CA BUGGE ENTRE LE DEBUT ET LA
  38.     }
  39. }


Message édité par brisssou le 13-12-2007 à 11:08:14

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 11:09:21    

fait tourner ton algo à la main, j'ai l'impression qu'il y a une problème avec l'utilisation de la variable initialisation et la ligne 22

 

à vue de nez


Message édité par brisssou le 13-12-2007 à 11:10:03

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 11:11:38    

et si tu faisais une Map<reference, Propriétaire>, ça te permettrait pas de savoir rapidement si tu as déjà un enregistrement pour ce gars ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 11:22:26    

excuse moi mais c'est quoi une map exactement?
jsuis vraiment nul...

Reply

Marsh Posté le 13-12-2007 à 11:22:55    

excuse moi mais une map c'est quoi? je suis preneur de tousles trucs et astuces!

Reply

Marsh Posté le 13-12-2007 à 11:29:12    

en fait j'ai fait un println pour savoir ce qu'il mettait dans le tableau et...il ne met pas le P211..
Pour le initialisation, jcomprends pa trop le pb mais pour le ajouter..en fait si ajouter=false, est ce que ca empeche de retourner dans le while (bon ca m'etonnerait parce que tout se fait bien sauf un gars qui bugge mais bon je neglige aucune piste...)

Reply

Marsh Posté le 13-12-2007 à 11:50:29    

la ligne 22 c'est ça : p[0] = new Proprietaire(reference, 0);
 
tu enregistres toujours en P[0], ça te choque pas ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 13:05:53    

ben en fait je ne refais pas toujours en p[0] puiisque apres initialisation=1 donc ca repasse pas dans cette boucle si?

Reply

Marsh Posté le 13-12-2007 à 13:30:28    

quelle est la différence entre ton initialisation, et ta non-initialisation ?
ton initialisation semble inutile, non ?
et si !ajouter, tu n'ajoute pas la nouvelle propriété en plus, non ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 13:30:28   

Reply

Marsh Posté le 13-12-2007 à 13:38:05    

ben c pour mettre un p[0]..l'initialisation de l'initialisation ou l'initialisation tout court? Parce que c'est pour forcer à d'abord passer dans la premiere boucle, puis ensuite dans la seconde..

Reply

Marsh Posté le 13-12-2007 à 14:56:53    

Bon j'ai essayé apparemment il y avait un probleme dans mon fichier txt...soit..lol
en tout cas tout maarche!
Merci de votre aide

Reply

Sujets relatifs:

Leave a Replay

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