IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

calculs à partir d'un fichier texte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut 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?
    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++;

    }


    }

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Premiere remarque : utilise la balise code(symbole #), c'est plus lisible.

    Si tu crees une methode qui retourne un double, ta methode doit renvoyer quelque chose dans tous les cas de figures.
    Donc ecris un return qqch a la fin de ta methode.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut 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.

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    si tu declares
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public double ta_methode ...
    tu dois renvoyer un double.

    de toute façon, tu peux (et meme tu dois) ecrire plusieurs return dans une methode qui a plusieurs conditions.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String uneMethode(int x){
    if (x==0)
        return "egal a zero";
    else
        return "different de zero";
    }

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut 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

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Voici quelques modifs de ton code qui te permettront, je l'espère, d'avancer (codé en java 1.5 ou supérieur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Citation Envoyé par flora806
    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
    Alors je ne comprends pas ce qui te pose problème.

Discussions similaires

  1. ajout de données à partir d'un fichier texte
    Par drakenzara dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 14/04/2006, 12h39
  2. Réponses: 4
    Dernier message: 26/01/2006, 12h03
  3. Lancer des commandes dos à partir d'un fichier texte
    Par tpdm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2005, 16h56
  4. état à partir d'un fichier texte
    Par onkel dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h26
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo