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

avec Java Discussion :

Somme des Float existe dans deux fichiers


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Points : 27
    Points
    27
    Par défaut Somme des Float existe dans deux fichiers
    Bonjours... je veux faire une somme des floats qui se trouve dans deux fichier ..

    fichier 1 contient des float (C) dans la formats suivante:
    48.0
    55.4
    1141
    45488
    1555
    5552

    fichier 2 contient deux colonne de float (la premiere X et la deuxieme Y)séparée par virgule dans la formats suivante:
    1555.222,7941158
    78465.5544,75155.1
    765.40,7655

    Je faire une addition de chaque élement de X par un élement C de fichier 1

    exemlple :
    1555.222+48.0
    78465.5544+55.4
    765.40+1141
    l’exécution s’arrête ici car il n'ya pas encore des X à additionner avec des C ,il affiche seulement les sommes qu'il a fait.

    Ma problème que mon prog faire la somme de tout les C par un seule X ou le contraire

    Remarque: les fichier 1 et le fichier 2 n'ont pas le même nombre de ligne .. (le nombres C et les nombres de X sont différents)

    // lecture des float du fichier 1
    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
     
    package conversion;
     
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
     
    public class ValuesReading1 {
    	public static List<Val> loadPoints(String filename) throws IOException {
      		return Files.lines(Paths.get(filename))
      				    .map(line-> line.split(" "))  // j'ai supprimer la virgule et l'a changer par espace ..
      				    .map(coord-> new Val(Float.parseFloat(coord[0])))
      				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
      	}
     
     
    }
    // lecture des float du fichier 2
    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
     
    package conversion;
     
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
     
    public class ValuesReading2 {
    	public static List<Read > loadPoints(String filename) throws IOException {
      		return Files.lines(Paths.get(filename))
      				    .map(line-> line.split(","))  
      				    .map(coord-> new Read(Float.parseFloat(coord[0]),Float.parseFloat(coord[1])))
      				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
      	}
     
     
    }

    la classe principale:
    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
     
    public class Everything
    {
    	public static void main(String args[]) throws IOException{
     
     
    //lecture de float de fichier 1
     
    		List<Conv_File1> data = ValueReading1.loadPoints("D:\\Doc\\java\\eq\\POI\\temperature\\src\\application\\cord.in");
    		for (Iterator<Conv_File1> iterator1 = data.iterator(); iterator1.hasNext();)
    		{
    			Conv_File1 conversion1 = iterator1.next();
     
    		//lecture de float de fichier 2
     
    		List<Conv_File2> data = ValueReading2.loadPoints("D:\\Doc\\java\\eq\\POI\\temperature\\src\\application\\Fsd.in");
    		for (Iterator<Conv_File2> iterator2 = data.iterator(); iterator2.hasNext();)
    		{
    			Conv_File2 conversion2 = iterator2.next();
     
     float x =conversion1.obs+conversion2.abs
    System.out.print("Somme"+x);
     
    }}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Conv_File1{
     
    	float obs
     
    	public Conv_File2(float obs)
    	{
    		this.obs= obs;
     
     
    	}
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    public class Conv_File2{
     
    	float abs,ord;
     
    	public Conv_File2(float abs, float ord)
    	{
    		this.abs= abs;
    		this.ord= ord;
     
    	}
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    .map(line-> line.split(" ")) // j'ai supprimer la virgule et l'a changer par espace....

    Si chaque ligne ne contient qu'une valeur, pourquoi faire un split selon un séparateur bidon ? Tu fais pas la split, c'est tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public static List<Val> loadPoints(String filename) throws IOException {
      		return Files.lines(Paths.get(filename)) 
      				    .map(coord-> new Val(Float.parseFloat(coord[0])))
      				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
      	}
    Et pourquoi cette classe Val ? Tu avais besoin d'une classe Conversion pour stocker 2 floats, mais une classe qui stocke un Float, ça existe déjà en Java : c'est Float. En plus, il existe une méthode qui parse un float et qui retourne directement un Float : valueOf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static List<Float> loadValues(String filename) throws IOException {
      		return Files.lines(Paths.get(filename)) 
      				    .map(coord-> Float.valueOf(coord[0])))
      				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
      	}
    Et pourquoi nous montrer des méthodes qui passent par les classes Val et Read, et ensuite nous montrer un code qui traite du Conv_File2 et Conv_File1 ? Sois un peu cohérent...

    Citation Envoyé par Dubwa Voir le message
    je veux faire une somme des entier qui se trouve dans deux fichier ..
    Déjà, tes fichiers ne contiennent pas des entiers (des entiers, c'est sans virgule). Ensuite, comme tu n'as pas le même nombre, il faut définir une règle : comment on combine n float avec m couples de float !

    Citation Envoyé par Dubwa Voir le message
    l’exécution s’arrête ici car il n'ya pas encore des X à additionner avec des C ,il affiche seulement les sommes qu'il a fait.
    C'est ça l'expression de cette règle, ou c'est le constat que ça fait quelque chose, sans nous dire si c'est bien ce que tu attends, ou si tu attends autre chose et quoi ?

    Citation Envoyé par Dubwa Voir le message
    Ma problème que mon prog faire la somme de tout les C par un seule X ou le contraire
    Ou le contraire ? Faudrait savoir... ça fait la somme de tous les C par un seul X, ou tous les X par seul C, faudrait savoir, parce que je doute que ça puisse faire tantôt l'un, tantôt l'autre...

    D'autre part, tu dis que tu cherches à faire ça :
    Citation Envoyé par Dubwa Voir le message
    Je faire une addition de chaque élement de X par un élement C de fichier 1
    Ce n'est pas très clair. D'après ton code, il semble que tu fasses la somme de chaque C du fichier 1 avec chaque X du fichier 2. Mais ton exemple semble dire que non.
    Donc il va falloir être plus clair. C'est quoi le bon code, c'est quoi le résultat obtenu, c'est quoi le résultat attendu.


    Si on a C qui vaut a et b dans le premier fichier, et X, (x,x'), (y,y'), (z,z'), dans le second,
    • soit tu voudrais la somme de chaque C avec chaque X, soit la somme de chaque C avec tous les X, (soit la somme de chaque X avec chaque C, peut importe l'ordre, grace à la commutativité), soit :
      a + x
      a + y
      a + z
      b + x
      b + y
      b + z
      et c'est ce que ton code fait.
    • soit la somme de chaque C avec chaque X correspondant, dans la limite des C et X disponibles, soit
      a + x
      b + y
      et c'est ce que ton exemple décrit
    • soit comme tu dis la somme de chaque X avec un C, mais alors il faudrait dire lequel

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Points : 27
    Points
    27
    Par défaut
    exemple :

    fichier 1 :
    78.15
    751.964
    554.4
    78.0
    98.1

    fichier2:
    78.1,77
    78.9,89
    82.1,789


    Résultât que je veux avoir:

    fichier3:

    78.1+(premier nombre de fichier1),77
    78.9+(deuxieme nombre de fichier1),89
    82.1+(troisime nombre de fichier1),789

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Dit clairement, sans ambiguïté et de façon cohérente, le résultat final, ce serait ça :
    1. 78.1 + 78.15,77
    2. 78.9 + 751.964, 89
    3. 82.1 + 554.4,7 89


    C'est bien ça ?

    Il faut que tu boucles en même temps sur les deux listes, en limitant par la taille de la plus petite des listes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<Conv_File1> dataFichier1 = ValueReading1.loadPoints("D:\\Doc\\java\\eq\\POI\\temperature\\src\\application\\cord.in");
    List<Conv_File2> dataFichier2  = ValueReading2.loadPoints("D:\\Doc\\java\\eq\\POI\\temperature\\src\\application\\Fsd.in");
     
    int nbmax = Math.min( dataFichier1.size(), dataFichier2.size ); // le nombre maximum de sommes qu'on peut faire est la taille de la plus petite des listes
     
    for(int i=0; i<nbmax; i++) {
     
        System.out.println( (dataFichier2.get(i).abs + dataFichier1.get(i).obs) +","+dataFichier2.get(i).ord);
     
    }

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Points : 27
    Points
    27
    Par défaut
    Grand Merci Perfect

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA pour réaliser une somme de deux colonnes dans deux fichiers différents
    Par chito79000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2015, 16h19
  2. [WD17] Enregistrer des données dans deux fichiers
    Par didier.dev dans le forum WinDev
    Réponses: 6
    Dernier message: 16/02/2015, 22h22
  3. Réponses: 2
    Dernier message: 31/10/2012, 13h46
  4. Inscrire des données dans deux fichiers excel a partir d'un userform
    Par creunch dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/09/2010, 11h52
  5. Réponses: 3
    Dernier message: 02/05/2009, 17h09

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