Stocker texte dans un tableau
liljohn27
Messages postés
29
Statut
Membre
-
liljohn27 Messages postés 29 Statut Membre -
liljohn27 Messages postés 29 Statut Membre -
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.
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:
- Stocker texte dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
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 :
Remarque : la Russie est en Asie, elle devrait avoir le même code que la Chine ou le Japon.
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.
liljohn27
Messages postés
29
Statut
Membre
Oui c'est vrai pour la Russie mais t'inquiète le programme va proposer de modifier le code continent .