Bonjour à tous,
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:
Code: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
Merci d'utiliser la balise "code" pour poster des lignes de programme.
yoda1234.
-----