Gros probleme de programmation

Fermé
vinc'03 - 12 déc. 2007 à 21:58
 vinc'03 - 13 déc. 2007 à 13:04
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 ICI.
initialisation=0;
BufferedReader entree2 = new BufferedReader (new FileReader ("terrains.txt")) ;
while (true)
{ String ligneLue = entree2.readLine() ;
if (ligneLue == null) break ;
StringTokenizer l = new StringTokenizer (ligneLue, " ") ;
reference= l.nextToken();
forme= l.nextToken();
Dim1 = Float.parseFloat (l.nextToken()) ;
Dim2 = Float.parseFloat (l.nextToken()) ;
if (forme.equals("C")){
S=3.14*(Dim1*Dim1);
}
if (forme.equals("R")){
S=(Dim1*Dim2);
}
if (forme.equals("T")){
S=((Dim1*Dim2)/2);
}
lieu= l.nextToken();
BufferedReader entree3 = new BufferedReader (new FileReader ("Tarifs.txt")) ;
while (true)
{ String ligneLue2 = entree3.readLine() ;
if (ligneLue2 == null) break ;
StringTokenizer m = new StringTokenizer (ligneLue2, " ") ;
lieu2= m.nextToken();
Prix = Float.parseFloat (m.nextToken()) ;
if(lieu.equals(lieu2)){
P=Prix*(S/100);
}
}
if(initialisation==0){
p[0]=new Proprietaire(reference,P);
initialisation=1;
}
else{
for (i=0; i<5; i++){
if(reference.equals(p[i].reference)){
p[i].patri=p[i].patri+(P);
}
}
}
entree3.close () ;
}
entree2.close () ;
permute=true;
while(permute){
permute=false;
for(i=0; i<4; i++){
if(p[i].patri<p[i+1].patri){
Proprietaire temp=p[i];
p[i]=p[i+1];
p[i+1]=temp;
permute=true;
}
}
}
System.out.println("proprietaires classés dans l'ordre décroissant de patrimoine");
for(i=0; i<5; i++){
System.out.println(p[i].reference+"\t");
}
System.out.println("patrimoines correspondants");
for(i=0; i<5; i++){
System.out.println(p[i].patri);
}
}// Fin main()
} //Fin classe




Merci d'avance pour vos reponses parce que la c'est limite la crise!lool
A voir également:

4 réponses

Mycki Messages postés 113 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 17 décembre 2007 46
13 déc. 2007 à 11:00
Salut,

est ce que tu pourrais me faire voir ta classe Propriétaire ?
0
Sans probleme!lool
alors ca donne:


public class Proprietaire {
String reference;
double patri;


/** Creates a new instance of Proprietaire */
public Proprietaire(String Reference, double Patrimoine) {
reference=Reference;
patri=Patrimoine;
}
}

une idée?
0
Mycki Messages postés 113 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 17 décembre 2007 46
13 déc. 2007 à 12:12
Euh désolé, mais je suppose que ton fichier terrains.txt est important la dedans :p
Tu pourras l'afficher stp ?

PS: N'oublie pas que java permet de faire de l'objet !!! Ton main est beaucoup trop grand et fait beaucoup trop de choses ! Tu devrais segmenter ton code.
0
ben en fait c'est ce fichier:


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
0