Stocker texte dans un tableau

Fermé
liljohn27 Messages postés 26 Date d'inscription mardi 20 novembre 2012 Statut Membre Dernière intervention 14 août 2014 - Modifié par liljohn27 le 30/11/2012 à 15:33
liljohn27 Messages postés 26 Date d'inscription mardi 20 novembre 2012 Statut Membre Dernière intervention 14 août 2014 - 21 déc. 2012 à 20:35
Bonjour à tous, j'aimerai pouvoir lire et remplir un tableau avec un fichier texte. Voici une partie de mon fichier texte:

2ETATS-UNIS WASHINGTON 9629047 291289535
3CHINE PEKIN 9596960 1273111290
5RUSSIE POUTINE 17075400 143954573
4AUSTRALIE CANBERRA 7686850 19834248
3JAPON TOKYO 377835 12761000
où le premier chiffre représente un int renvoyant vers un continent. la suite le nom du pays, la capitale, la superficie et la population.
Mon souci c'est que je n'arrive pas à récupérer le int du continent: voici mon code

static int lireRemplir(String nomFichier, Nation[] nation) throws IOException
{
int n = 0;
boolean existeFichier = true;

FileReader fr = null; //Initialiser pour Java

// Essayer de localiser le fichier à partir de son nom
try {
fr = new FileReader (nomFichier);
}
//Intercepter l'érreur si le fichier n'existe pas
catch (java.io.FileNotFoundException erreur){
System.out.println("Probleme d'ouvrir le fichier " +nomFichier);
existeFichier = false;
}

if (existeFichier){
//Contruction de l'objet d'entrée qui va permettre d'appliquer la lecture d'une ligne de texte

BufferedReader entree = new BufferedReader (fr);
boolean finFichier = false;

while (!finFichier) {
// Lecture d'une ligne
String uneLigne = entree.readLine();
System.out.printf("%s\n", uneLigne);
if (uneLigne == null)
finFichier = true;
else{
// la classe Pays dispose d'un constructeur approprié
nation[n++] = new Nation(uneLigne);
}
}
entree.close(); //Fermeture du fichier lu
}
return n;
}
merci d'avance.


A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
30 nov. 2012 à 20:55
Il y a quelque chose de très maladroit dans ton code, c'est de passer un tableau en paramètre, alors que l'on ne connaît pas la taille du fichier, il est plus sûr de passer par des listes.

Si tu as bien le format de fichier indiqué avant tu peux le lire comme ça :

import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedList;
import java.util.Scanner;

public class Nation
{
    // Constructeur bidon
    public Nation(int continent, String pays, String capitale, int superficie, int population)
    {
        System.out.printf("%d - %s - %s - %d - %d\n",
            continent,pays,capitale,superficie,population);
    }
    
    public static Nation[] lire(String nomFichier) throws FileNotFoundException
    {
        Scanner sc = new Scanner(new File(nomFichier));
        
        LinkedList<Nation> liste = new LinkedList<Nation>();
        
        while (sc.hasNextLine())
        {
            String[] tab = sc.nextLine().split(" ");
            
            int continent = Integer.parseInt(String.valueOf(tab[0].charAt(0)));
            String pays = tab[0].substring(1);
            String capitale = tab[1];
            int superficie = Integer.parseInt(tab[2]);
            int population = Integer.parseInt(tab[3]);
            
            liste.add(new Nation(continent,pays,capitale,superficie,population));
        }
        
        sc.close();
        
        return liste.toArray(new Nation[liste.size()]); 
    }
    
    public static void main(String[] args) throws FileNotFoundException
    {
        Nation[] nations = lire("C:/test.txt");
    }
}

Remarque : la Russie est en Asie, elle devrait avoir le même code que la Chine ou le Japon.
1
liljohn27 Messages postés 26 Date d'inscription mardi 20 novembre 2012 Statut Membre Dernière intervention 14 août 2014
21 déc. 2012 à 20:35
Oui c'est vrai pour la Russie mais t'inquiète le programme va proposer de modifier le code continent .
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 30/11/2012 à 18:26
Bonsoir liljohn27,
Ton fichier texte est réellement comme cela ? Je veux dire tout collé ?
édit:
Quel est le type du tableau nation ? String ou int ?
Si String, alors ok. Si int alors caster le String provenant du fichier.
0