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

Collection et Stream Java Discussion :

tableau de valeur


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 175
    Par défaut tableau de valeur
    bonjour,


    Dans ma class j ai un tableau de valeur qui me sert a faire des calculs sous forme:
    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
     
     
    private static double[][] inputArray = new double[][] {
     
     
            {0, 8, 3.5, 1},
     
            {10, 2, 3.0, 0},
     
            {20, 6, 3.2, 1},
     
            {30, 1, 3.8, 0},
     
            {40, 9, 2.90, 1},
     
            {50, 9, 3.15, 0},
     
            {60, 3, 3.25, 1},
     
            {70, 4, 3.3, 0},
     
            {80, 9, 3.1, 1}
     
       };
    J essais maintenant de faire la même chose mais a partir d un fichier .txt avec ce format:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    0; 8; 3.5; 1
    10; 2; 3.0; 0
    20; 6; 3.2; 1
    30; 1; 3.8; 0
    40; 9; 2.90; 1
    50; 9; 3.15; 0
    60; 3; 3.25; 1
    70; 4; 3.3; 0
    80; 9; 3.1; 1

    De façon a ce que mes calculs se face a partir des valeurs du fichier et non plus a partir des valeurs du tableau de ma class.

    Je réussi a lire mes valeur dans le fichier mais pas a les utiliser.


    merci

  2. #2
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut affiche un rail de code stp :)
    tu as parsé tes valeurs ? quand tu a récupères les données c'est sous forme de chaînes de caractères et toi tu veux travailler sur des éléments numériques

    montre un peu de code

    a+

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut Ton problème m'a intéressé
    Ton problème m'a intéressé, c'était plus complexe que ce que je pensais !
    Alors voilà ma solution, je suis sûr que tu trouveras une façon de l'optimiser !!
    a+

    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
     
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.Scanner;
     
    public class ParseCSV {
    	//conversion d'un tableau de chaînes en tableau de valeurs flottantes
    	public static float[] toFloatArray(String[] stringArray) {
    		float[] floatArray = new float[stringArray.length];
    		for (int i = 0; i < stringArray.length; i++) {
    			floatArray[i] = Float.parseFloat(stringArray[i]);
    		}
     
    		return floatArray;
    	}
     
    	public static void main(String[] args) throws FileNotFoundException {
    		//ouverture du fichier
    		String filePath = "data.csv";
    		Scanner scanner = new Scanner(new File(filePath));
     
    		//parcours et remplissage dynamique d'un tableau
    		ArrayList<float[]> matrix = new ArrayList<float[]>();
    		while (scanner.hasNextLine()) {
    		    String line = scanner.nextLine();
    		    matrix.add( toFloatArray(line.split(";")) );
    		}
     
    		//la conversion se joue ici
    		float[][] floatMatrix = (float[][]) matrix.toArray(new float[matrix.size()][]);
     
    		//affichage
    		for (int i = 0; i < floatMatrix.length; i++) {
    			for (int j = 0; j < 4; j++) {
    				System.out.println(floatMatrix[i][j]);
    			}
    		}
    	}
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 175
    Par défaut
    merci pour ton aide,

    Je ne connaissais pas la class scanner elle semble tres pratique.

    Je lis bien le fichier avec mais il y a un bug sur le traitement .

    Pas d erreur de prog sous eclipse mais message dans la console suivant:

    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
    Exception in thread "main" java.lang.NumberFormatException: empty String
    	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    	at java.lang.Float.parseFloat(Unknown Source)
    	at Calculs.test3.toFloatArray(test3.java:369)
    	at Calculs.test3.main(test3.java:237)
    lecture fichier
    0; 8; 3.5; 1;8
    10; 2; 3.0; 0;15
    20; 6; 3.2; 1;16
    30; 1; 3.8; 0;10
    40; 9; 2.90; 1;22
    50; 9; 3.15; 0;17
    60; 3; 3.25; 1;12
    70; 4; 3.3; 0;30
    80; 9; 3.1; 1;20
    ca me renvoi sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    floatArray[i] = Float.parseFloat(stringArray[i]);

    Avez vous le même problème?


    Je viens de teste la fonction "toFloatArray" elle semble fonctionner.

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut explication
    enlève les espaces dans ton fichier CSV ou change la méthode toFloatArray() par celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static float[] toFloatArray(String[] stringArray) {
    		float[] floatArray = new float[stringArray.length];
    		for (int i = 0; i < stringArray.length; i++) {
    			floatArray[i] = Float.parseFloat(stringArray[i].trim());
    		}
     
    		return floatArray;
    	}
    J'ai juste rajouté un appel à trim() car je viens de m'apercevoir que j'avais enlevé les espaces pour utiliser ton CSV
    je n'ai pas testé mais çà devrait faire l'affaire

    a+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 175
    Par défaut
    Désolé,

    J ai éliminé les espaces dans le cvs et remplacé la méthode, j ai toujours le même message d erreur dans la console.

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut j'ai retesté
    j'ai retesté : çà fonctionne

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 175
    Par défaut
    Merci ton code fonctionne
    Je l avais mal implanté.

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

Discussions similaires

  1. dessiner une courbe à partir d'un tableau de valeur
    Par bob75018 dans le forum C++Builder
    Réponses: 8
    Dernier message: 15/06/2007, 04h29
  2. [Ant]Lire un XML - renvoyer un tableau de valeurs
    Par gael.poffet dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 06/03/2006, 15h32
  3. [Tableaux] récupérer un tableau de valeur
    Par PAYASS59 dans le forum Langage
    Réponses: 7
    Dernier message: 16/02/2006, 12h22
  4. retourné un tableau de valeur d'une fonction
    Par hoaxpunk dans le forum Oracle
    Réponses: 2
    Dernier message: 24/01/2006, 17h36
  5. tableau comme valeur dans un hash de hash
    Par king_kunu dans le forum Langage
    Réponses: 2
    Dernier message: 02/01/2006, 16h05

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