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

Entrée/Sortie Java Discussion :

Remplir une Arraylist à partir d'un fichier csv


Sujet :

Entrée/Sortie Java

  1. #21
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Oui, c'est vraiment tout ce qu'il m'affiche, c'est la première fois que ca me fait ca.

    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
    public class ReadFile {
     
     
    	    public static ArrayList<iso.Country> ReadFile(String pathToFile, String pathToFile2){
    	    	String country;
     
    	    	ArrayList<Country> countries = new ArrayList<Country>();
     
     
     
    	    	try {
    		            BufferedReader reader1 = new BufferedReader(new FileReader(new File(pathToFile)));
    		            BufferedReader reader2 = new BufferedReader(new FileReader(new File(pathToFile2)));
     
    		            for(String line1=reader1.readLine(); line1!=null; line1=reader1.readLine()) {
     
    				          String line2 = reader2.readLine();
    				          if ( line2==null ) {
    				                 throw new IOException("Fichier 2 trop court");
    				          }
     
    				          String[] champLine1 = line1.split(",,"); 
    				          country = champLine1[0]; 
    				          String[] champLine2 = line2.split("\t        "); 
    				          if ( champLine2[1].equals(country) ) { 
    				          }
    				          else {
     
    				              System.out.println("Le pays " + country + "n'est pas présent dans votre second fichier");
     
    				          }
    				   }
    		            }
     
     
    		         catch (Exception ex){
    		            System.err.println("Error. "+ex.getMessage());
    		        }
    			return countries;
     
    	    	}
     
     
    		public static void main(String[] args){
     
     
    			ReadFile("/Users/dell/Desktop/Cours/ISO/POP.csv","/Users/dell/Desktop/Cours/ISO/rawdata_2147.txt");
    	    }
     
     
    		}

  2. #22
    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 : 54
    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
    Le programme t'affiche ce que tu lui dis d'afficher avec System.err.println("Error. "+ex.getMessage());.
    A là place, fait ex.printStackTrace();. L'erreur est probablement une ArrayIndexOutBoundException à cause de tes split()... c'est quoi ce \t avec des espaces derrières ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Le programme t'affiche ce que tu lui dis d'afficher avec System.err.println("Error. "+ex.getMessage());.
    A là place, fait ex.printStackTrace();.
    Ah d'accord ! Merci

    c'est quoi ce \t avec des espaces derrières ?
    Dans le fichier les "colonnes" sont séparés par une tabulation et plusieurs espaces

  4. #24
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Salut :-) J'ai (encore) un petit problème Il se situe au niveau de mon "champLine2[]" enfaite, le tableau n'accepte que l'élément "0" sinon une erreur m’apparaît : java.lang.ArrayIndexOutOfBoundsException: 1 ; la valeur de l'erreur dépend de la valeur que je rentre dans le tableau.. Je comprends pas pourquoi ca me fait ca seulement à celui ci alors que les deux autres fonctionnent très bien..


    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    package world;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException; 
    import java.util.ArrayList;
     
     
    public class ReadFile3 {
    	public static void main(String[] args) throws IOException{
     
    		ArrayList<Country> countries = new ArrayList<Country>();
     
     
    		String fichier1 = "country_codes_iso.csv";
    		String fichier2 = "POP.csv";
    		String fichier3 = "rawdata_2147.txt";
     
    		BufferedReader br1 = null;
    		BufferedReader br2 = null;
    		BufferedReader br3 = null;
    		{
    			try {
    				File f1 = new File(fichier1);
    				File f2 = new File(fichier2);
    				File f3 = new File(fichier3);
     
    				br1 = new BufferedReader (new FileReader(f1));
    				br2 = new BufferedReader (new FileReader(f2));
    				br3 = new BufferedReader (new FileReader(f3));
     
     
    				String line1 = null;
    				String line2 = null;
    				String line3 = null;
     
     
    				while ((((line1 = br1.readLine())!= null)) && ((line2 = br2.readLine())!=null) && ((line3 = br3.readLine())!=null)){
     
    			          String[] champLine1 = line1.split(","); // je lis les champs dans le fichier 1 (séparés par des virgules)
    			          String countryName = champLine1[0]; // le pays est en première position
     
    			          String[] champLine2 = line2.split(",,"); 
    			          String population = champLine2[0];
     
    			          String[] champLine3 = line3.split("\t"); // je lis les champs dans le fichier 3 (séparés par des tab)
    			          String surface = champLine3[2]; 
     
     
     
     
     
     
    					if (line1.contains("France")){
    							System.out.println(countryName);
    						}
    						if (line2.contains("France")){
    							System.out.println(population);
    						}
     
    						if (line3.contains("France")){
    							System.out.println(surface);
    							}
     
    					}
    				}
     
    			catch (Exception e){
    				e.printStackTrace();
    			}
    			finally {
     
    				br1.close();
    				br2.close();
    				br3.close();
     
    			} 
     
    		}
     
    		 }
    	}

  5. #25
    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 : 54
    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
    line2.split(",,"); : les éléments sont-ils vraiment séparés chacun par 2 virgules successives dans "POP.csv" ? Genre 1,,2,,3,,4,,5 ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    line2.split(",,"); : les éléments sont-ils vraiment séparés chacun par 2 virgules successives dans "POP.csv" ? Genre 1,,2,,3,,4,,5 ?

    Non par une seule, mais lorsque je split avec une seule, une erreur apparaît à ce niveau, c'est pour ca que j'en ai mis deux du coup le tableau est divisé par deux, en soit ca ne change pas grand chose non ?

  7. #27
    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 : 54
    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
    Bah, si, ça change tout.

    Si tu fais un split(",,") sur une chaîne qui contient "1,2,3,4,5,6", tu n'obtiens pas un tableau qui a la moitié des éléments du tableau obtenu avec split(","). string.split( regex ), ça divise la chaine string en morceaux en coupant là où il y a quelque chose qui correspond à regex, et ça supprime ce quelque chose.

    Ainsi,

    • "1,2,3,4,5,6".split(",") ça donne un tableau de six éléments :
      1 2 3 4 5 6
      Un tableau de 6 éléments
    • "1,2,3,4,5,5".split(",,"] ça donne un tableau de un élément :
      1,2,3,4,5,6
      Parce qu'il n'y a aucune virgule en double !!! Et, donc, c'est pour ça que tu obtenais une IndexArrayOutOfBoundException en essayant de récupérer l'élement d'index 1 (il n'existe pas).
    • Pire encore,
      "1,2,3,,,6".split(",") ça donne un tableau de six éléments :
      1 2 3 6
      alors que
      "1,2,3,,,6".split(",,") ça donne un tableau de deux éléments :
      1,2,3 ,6
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #28
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Ahh d'accord, je comprends mieux ! Merci beaucoup !
    Du coup je pense que je vais utiliser un split de guillemet, puisque ce que je veux récupérer est le seul champ en comportant, et en y repensant c'est plus judicieux parce que dans le champ lui même il y a des virgules.. Il me semble que j'avais vu quelque part que la fonction qui permettrait de le faire était split (\"\"); ou quelque chose dans le genre non ?

  9. #29
    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 : 54
    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
    un split de guillemet ? Tu veux dire que tu as des lignes du genre : blah blah,"truc,machin",bidule et que tu veux obtenir trois éléments dans ce cas :
    • blah blah
    • truc,machin
    • bidule


    Un split est possible, mais c'est plutôt complexe pour un débutant, puisqu'il faut couper selon les virgules, qui ne sont pas entre guillemets (et encore, il faudrait gérer l'échappement, ce qui complique encore plus). En tout cas ce n'est certainement pas "\"\"", qui cherche juste 2 guillemets qui se suivent.
    Un moyen simple serait d'utiliser un automate à état. L'autre moyen est d'utiliser une bibliothèque de chargement de CSV (Apache CSVParser par exemple).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #30
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Ah oui je suis tombée sur le split dont tu me parles : "split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")", et effet j'ai pas très bien compris au début mais j'ai cherché et si j'ai bien compris ca ne prends juste pas en compte ce qu'il y a entre [], guillement etc..?

  11. #31
    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 : 54
    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
    Oui, ça à l'air de fonctionner avec cette expression régulière, l'échappement se faisant en doublant le ".

    Le (?=) signifie qui est suvi de : ainsi a(?=b) dit qu'on cherche les a suivi d'un b. Donc, ici :
    • , // on cherche les virgules
    • (?= // suivi de
      • (
        • [^\"]* //un nombre quelconque de caractères autres que "
        • \" // suivis d'un "
        • [^\"]* // suvis d'un nombre quelconque de caractères autres que "
        • \" // suivis d'un "
      • )* un nombre quelconque de ça (ça correspond à 2 ", avec entre de 0 à n caractères quelconques sauf des ", plusieurs fois de suite)
    • [^\"]* // suivi d'un nombre quelconque de caractères autres que "
    • $ jusqu'à la fin de la ligne
    • ) // fin de ce qui définit "ce qui suit la virgule"


    Le groupe (?=...) étant non capturant on ne perd pas son contenu dans ce qu'on récupère.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #32
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Le groupe (?=...) étant non capturant on ne perd pas son contenu dans ce qu'on récupère.[/QUOTE]
    Merci pour ton explication détaillée, je comprends beaucoup mieux l'utilisation de ce split, mais du coup je l'ai testé dans mon programme et ca me donne la même erreur :/

  13. #33
    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 : 54
    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
    Tu peux me donner le contenu exact de la ligne qui cause l'erreur et l'intitullé exact de l'erreur (la stacktrace avec le message complet).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #34
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Les lignes sont de ce format : CHN,1,,China,"1,371,220",,,,,,,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    population = champLine2[4];
    Et l'erreur affichée est : java.lang.ArrayIndexOutOfBoundsException: 4

  15. #35
    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 : 54
    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
    Tu es sure que c'est bien la ligne qui plante (je n'ai pas besoin d'avoir le type de lignes et en particulier une ligne qui fonctionne, mais une ligne pour laquelle ça ne fonctionne pas !).

    En tout cas, cette ligne est bien découpée, et la partie d'index 4 existe bien (c'est "1,371,220"). Donc le problème est ailleurs. Soit ce n'est pas la ligne que tu me montres qui plante, soit c'est ton code. Tu peux me remettre le code complet actuel ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #36
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Si c'est bien celle là puisque lorsque je clique sur l'erreur eclipse me renvoie à cette ligne..

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    	ArrayList<Country> countries = new ArrayList<Country>();
    	String countryName;
    	 String population;
    	 String surface;
     
    	String fichier1 = "country_codes_iso.csv";
    	String fichier2 = "POP.csv";
    	String fichier3 = "rawdata_2147.txt";
     
    	BufferedReader br1 = null;
    	BufferedReader br2 = null;
    	BufferedReader br3 = null;
    	{
    		try {
    			File f1 = new File(fichier1);
    			File f2 = new File(fichier2);
    			File f3 = new File(fichier3);
     
    			br1 = new BufferedReader (new FileReader(f1));
    			br2 = new BufferedReader (new FileReader(f2));
    			br3 = new BufferedReader (new FileReader(f3));
     
     
    			String line1 = null;
    			String line2 = null;
    			String line3 = null;
     
     
    			while ((((line1 = br1.readLine())!= null)) && ((line2 = br2.readLine())!=null) && ((line3 = br3.readLine())!=null)){
     
    				String[] champLine1 = line1.split(","); // je lis les champs dans le fichier 1 (séparés par des virgules)
    				String[] champLine2 = line2.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
    				String[] champLine3 = line3.split("\t"); // je lis les champs dans le fichier 3 (séparés par des tab)
     
    				countryName = champLine1[0]; // le pays est en première position
    				surface = champLine3[2];
     
    				//if (champLine2[2].equals(countryName)){
    				population = champLine2[4];
    				//}
    				if (line3.contains(countryName)){
    				surface = champLine3[2];
    				}
    				Country country = new Country(countryName,population,surface);
    				countries.add(country);
     
    				}
    				}
     
    		catch (Exception e){
    			e.printStackTrace();
    		}
    		finally {
     
    			try {
    				br1.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    			try {
    				br2.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			try {
    				br3.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
     
     
    		}
     
    		}

  17. #37
    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 : 54
    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
    Tu peux ajouter cette ligne :
    System.out.println("Line2: ("+champLine2.length+")" + Arrays.toString(champLine2));juste après celle-là :

    String[] champLine2 = line2.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");et me dire ce que ça affiche juste avant l'affichage de l'exception.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #38
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Tu peux ajouter cette ligne :
    System.out.println("Line2: ("+champLine2.length+")" + Arrays.toString(champLine2));juste après celle-là :

    String[] champLine2 = line2.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");et me dire ce que ça affiche juste avant l'affichage de l'exception.
    Line2: (2)[, Population 2015]
    Ca m'affiche ca, c'est la taille de l'Array c'est ca?

  19. #39
    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 : 54
    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
    Citation Envoyé par Sara_hda Voir le message
    Line2: (2)[, Population 2015]
    Ca m'affiche ca, c'est la taille de l'Array c'est ca?
    Exact, 2 est la taille du tableau, qui ne contient donc que 2 éléments :
    • une chaîne vide
    • la chaîne "Population 2015"

    Donc rien d'étonnant d'avoir une erreur quand tu essayes de récupérer le troisième élément.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #40
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Exact, 2 est la taille du tableau, qui ne contient donc que 2 éléments :
    • une chaîne vide
    • la chaîne "Population 2015"

    Donc rien d'étonnant d'avoir une erreur quand tu essayes de récupérer le troisième élément.
    Je vois d'où viens l'erreur, les 5 premières lignes du fichier en question concerne le titre, je devrai surement commencer l'annalyse du fichier à la ligne 6 non ?
    Tout de même lorsque j'écris cela : population = champLine2[1]; ca me met la même erreur, il ne devrait pas s'afficher "Population 2015" ??

Discussions similaires

  1. [AC-2003] Requête pour remplir une table à partir d'un fichier Excel
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/09/2009, 10h52
  2. remplir une combobox à partir d'un fichier .csv
    Par wolverine1987 dans le forum MFC
    Réponses: 24
    Dernier message: 28/04/2009, 11h00
  3. Tracer une courbe à partir d'un fichier .csv
    Par dzonaser dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/10/2008, 14h48
  4. Réponses: 0
    Dernier message: 07/02/2008, 16h09
  5. Remplir une liste à partir d'un fichier texte
    Par leroidje dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2007, 08h41

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