calculs à partir d'un fichier texte
Bonjour,
j'ai un petit souci avec mon code. ça consiste à calculer des indicateurs à partir des valeurs contenues dans un fichier texte.
je fais appel donc au fichier, je lie élément par élément et j'insère la méthode qui calcule ces indicateurs. par contre il y a apparement un "return" qui manque, je ne vois pas comment faire, qqu pourrait m'aider?:roll:
Merciii
Code:
public double Corr_demog (String [] args)throws IOException
{
BufferedReader reader = new BufferedReader(new FileReader(filePath));
int size_fichier=0;
String line; /*=null*/
//ArrayList<String> items = new ArrayList<String>();
StringTokenizer splitter;
while ((line = reader.readLine()) != null) {
size_fichier=size_fichier+1;
}
data = new String [size_fichier][5];
reader = new BufferedReader(new FileReader(filePath));
int num_ligne=0;
while ((line = reader.readLine()) != null)
{
splitter = new StringTokenizer(line,"|");
String id = splitter.nextToken();
//String Age = splitter.nextToken();
int Age = Integer.parseInt(line);
//String Sexe = splitter.nextToken();
int Sexe = Integer.parseInt(line);
String Profession = splitter.nextToken();
//String Nat = splitter.nextToken();
int Nat = Integer.parseInt(line);
while (splitter.hasMoreTokens())
{
for (int i=0;i<5;i++)
{data[num_ligne][i]=splitter.nextToken();
double Corr = 0.0;
double Age_au = 0.0;
double Sexe_au = 0.0;
double Nat_au = 0.0;
int Sex_a = 0;
int Sex_u = 0;
int Nat_a = 0;
int Nat_u = 0;
int Age_a = 0;
int Age_u = Age;
Corr = (Age_au + Sexe_au + Nat_au)/3;
Age_au = 40 - Math.abs(Age_a - Age_u)/20;
if (Sex_a == Sex_u)
{Sexe_au = 1.0;}
else
Sexe_au = 0.1;
if (Nat_a == Nat_u)
{ Nat_au = 2;
}
else
Nat_au = 0.1;
return Corr;
}
}
num_ligne++;
}
}
calculs à partir d'un fichier texte
Merci pour ta réponse.
un return ça peut être un return quoi par exp? sachant que juste avant j'en ai déja inséré un.:?
calculs à partir d'un fichier texte
j'ai compris le principe de nécessité de faire un return à la fin si on a "public double nommethode..."
mais dans mon cas, j'ai fait plusieurs tests mais j'arrive pas à le faire encore :(
prb avec le get et le set
Bonjour,
Merci pour ta réponse.
je viens d'insérer le code que tu m'as envoyé pour voir ce que ça donne et là il y a un souci avec les méthodes get et set, même si j'ai importé les paquages nécessaires.
****
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
****
pour répondre à ta question, ce que je veux faire exactement c'est lire le fichier texte qui est ss forme de "Id|age|sexe|profession|CP"
j'ai besoin de calculer des indicateurs à partir de l'age, le sexe et le CP
--> Indicateur "Corr"
le calcul se fait apr exp pour l'utilisateur N°1 avec chacun des autres utilisateurs et j'ai besoin après d'afficher et de stocker le résultat trouvé pour chaque ligne.
je suis encore une débutante, c pour ça que j'ai besoin de l'aide plzz ;)
Merci.
Citation:
Envoyé par Fifan31
Voici quelques modifs de ton code qui te permettront, je l'espère, d'avancer (codé en java 1.5 ou supérieur):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
public double Corr_demog(String filePath) throws IOException {
double Corr = 0.0;
// Creation d'un scanner pour lire le fichier
Scanner scanner = new Scanner(new File(filePath)).useDelimiter("\\|");
// La liste des objets lus dans le fichiers
List<MyObject> data = new ArrayList<MyObject>();
while (scanner.hasNext()) {
// Creation d'un nouvel objet
MyObject myObject = new MyObject();
// Valorisation des champ de l'objet
myObject.setId(scanner.next());
myObject.setAge(scanner.nextInt());
myObject.setSexe(scanner.nextInt());
myObject.setProfession(scanner.next());
myObject.setNat(scanner.nextInt());
// Ajout de l'objet à la liste
data.add(myObject);
}
// Pour chaque objet
for (MyObject object : data) {
double Age_au = 0.0;
double Sexe_au = 0.0;
double Nat_au = 0.0;
int Sex_a = 0;
int Sex_u = 0;
int Nat_a = 0;
int Nat_u = 0;
int Age_a = 0;
int Age_u = object.getAge();
Corr = (Age_au + Sexe_au + Nat_au) / 3;
Age_au = 40 - Math.abs(Age_a - Age_u) / 20;
if (Sex_a == Sex_u) {
Sexe_au = 1.0;
} else
Sexe_au = 0.1;
if (Nat_a == Nat_u) {
Nat_au = 2;
} else
Nat_au = 0.1;
}
return Corr;
} |
J'avoue que je n'ai pas compris le traitement que tu fais aux données lues dans le fichier.
Au passage, tu peux sans doute traiter les données au fur et à mesure que tu les lis sans passer par la création d'une liste de MyObject. Cette classe, MyObject n'est en fait qu'un simple agrégat des différents champs que tu lis dans le fichier. :king: