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

Langage Java Discussion :

Stocker dans file ce qui est lu dans un fichier texte


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Stocker dans file ce qui est lu dans un fichier texte
    Bonsoir,

    J'ai une question concernant le stockage des éléments lu à partir d'un fichier texte. J'essaye de coder un petit programme et je dois lire des nombres qui se trouvent dans un fichier texte et les stocker dans une file, pour ensuite copier les éléments de cette pile dans un tableau multi-dimensionnel mais je ne sais pas comment je dois m'y prendre. Je sais lire le fichier ligne par ligne mais je n'arrive pas à stocker chaque nombre dans une pile. Pourriez-vous m'aider? Voici mon code. D'avance merci.

    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
    import java.io.*;
     
     
     
    import java.util.*;
     
    import java.io.BufferedReader;
     
    import java.io.FileInputStream;
     
    import java.io.InputStream;
     
    import java.io.InputStreamReader;
     
     
     
    public class Main
     
    {
     
        public static void main(String[] args)
     
        {  
     
            String chaine = "";
     
            String fichier = "fichier.txt";
     
     
     
            //lecture du fichier texte 
     
            try
     
            {
     
                InputStream ips = new FileInputStream(fichier);
     
                InputStreamReader ipsr = new InputStreamReader(ips);
     
                BufferedReader br = new BufferedReader(ipsr);
     
                String ligne;
     
                while ((ligne = br.readLine()) != null)
     
                {
     
                    System.out.println(ligne);
     
                    chaine += ligne + "\n";
     
                }
     
                br.close();
     
     
     
             }     
     
            catch (Exception e)
     
            {
     
                System.out.println(e.toString());
     
            }
     
     
     
            //initialisation tableau
     
     
     
            final int[][] world = { {0,0,0}, {0,1,0}, {0, 0 ,0} };
     
     
     
        }
     
     
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Bonjour,

    Voici un exemple qui utilise la classe Stack qui est une pile lifo. J'ai joint le fichier.txt utilisé pour l'exemple. A noter qu'il faut remplir le tableau à l'envers car c'est le dernier element de la pile qui sort en premier.

    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
    84
    85
    86
    87
     
    import java.io.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
     
    public class Main
     
    {
     
        public static void main(String[] args)
     
        {  
     
            //String chaine = "";
            Stack<Integer> stack = new Stack<Integer>();
     
            String fichier = "fichier.txt";
     
     
     
            //lecture du fichier texte 
     
            try
     
            {
     
                InputStream ips = new FileInputStream(fichier);
     
                InputStreamReader ipsr = new InputStreamReader(ips);
     
                BufferedReader br = new BufferedReader(ipsr);
     
                String ligne;
     
                while ((ligne = br.readLine()) != null)
     
                {
     
                    System.out.println(ligne);
     
                    //chaine += ligne + "\n";
                    stack.push(Integer.parseInt(ligne));
     
                }
     
                br.close();
     
     
     
             }     
     
            catch (Exception e)
     
            {
     
                System.out.println(e.toString());
     
            }
     
     
     
            //initialisation et remplissage du tableau
     
     
     
            final int[][] world = { {0,0,0}, {0,1,0}, {0, 0 ,0} };
     
            for (int i = 2; i>=0;i--) {
            	for(int j=2;j>=0;j--) {
            		world[i][j] = 	stack.pop();
            	}
            }
     
            //affichage du tableau
     
            for (int i = 0; i<3;i++) {
            	for(int j=0;j<3;j++) {
            		System.out.print(world[i][j] + "  ");
            	}
            	System.out.println("");
            }
        }
    }
    Par contre, la pile ne sert à rien pour remplir le tableau, tu pouvais faire un truc du style:


    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
     
    import java.io.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    public class Main
     
    {			
        public static void main(String[] args)
     
        {  
        	final int[][] world = { {0,0,0}, {0,1,0}, {0, 0 ,0} };
            String fichier = "fichier.txt";
            //lecture du fichier texte 
     
            try
     
            {
     
                InputStream ips = new FileInputStream(fichier);
     
                InputStreamReader ipsr = new InputStreamReader(ips);
     
                BufferedReader br = new BufferedReader(ipsr);
     
                String ligne;
     
                int i=0;
                int j=0;
     
                while ((ligne = br.readLine()) != null)
     
                {
     
                    System.out.println(ligne);
                    world[i][j] = Integer.parseInt(ligne);
                    j = j+1;
                    if (j==3) {
                    	j=0;
                    	i=i+1;
                    }
     
     
                }
     
                br.close();
     
     
     
             }     
     
            catch (Exception e)
     
            {
     
                System.out.println(e.toString());
     
            }
     
     
            //affichage du tableau
     
            for (int i = 0; i<3;i++) {
            	for(int j=0;j<3;j++) {
            		System.out.print(world[i][j] + "  ");
            	}
            	System.out.println("");
            }
        }
    }
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par ludomacho Voir le message
    Bonjour,

    Voici un exemple qui utilise la classe Stack qui est une pile lifo. J'ai joint le fichier.txt utilisé pour l'exemple. A noter qu'il faut remplir le tableau à l'envers car c'est le dernier element de la pile qui sort en premier.

    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
    84
    85
    86
    87
     
    import java.io.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
     
    public class Main
     
    {
     
        public static void main(String[] args)
     
        {  
     
            //String chaine = "";
            Stack<Integer> stack = new Stack<Integer>();
     
            String fichier = "fichier.txt";
     
     
     
            //lecture du fichier texte 
     
            try
     
            {
     
                InputStream ips = new FileInputStream(fichier);
     
                InputStreamReader ipsr = new InputStreamReader(ips);
     
                BufferedReader br = new BufferedReader(ipsr);
     
                String ligne;
     
                while ((ligne = br.readLine()) != null)
     
                {
     
                    System.out.println(ligne);
     
                    //chaine += ligne + "\n";
                    stack.push(Integer.parseInt(ligne));
     
                }
     
                br.close();
     
     
     
             }     
     
            catch (Exception e)
     
            {
     
                System.out.println(e.toString());
     
            }
     
     
     
            //initialisation et remplissage du tableau
     
     
     
            final int[][] world = { {0,0,0}, {0,1,0}, {0, 0 ,0} };
     
            for (int i = 2; i>=0;i--) {
            	for(int j=2;j>=0;j--) {
            		world[i][j] = 	stack.pop();
            	}
            }
     
            //affichage du tableau
     
            for (int i = 0; i<3;i++) {
            	for(int j=0;j<3;j++) {
            		System.out.print(world[i][j] + "  ");
            	}
            	System.out.println("");
            }
        }
    }
    Par contre, la pile ne sert à rien pour remplir le tableau, tu pouvais faire un truc du style:


    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
     
    import java.io.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    public class Main
     
    {			
        public static void main(String[] args)
     
        {  
        	final int[][] world = { {0,0,0}, {0,1,0}, {0, 0 ,0} };
            String fichier = "fichier.txt";
            //lecture du fichier texte 
     
            try
     
            {
     
                InputStream ips = new FileInputStream(fichier);
     
                InputStreamReader ipsr = new InputStreamReader(ips);
     
                BufferedReader br = new BufferedReader(ipsr);
     
                String ligne;
     
                int i=0;
                int j=0;
     
                while ((ligne = br.readLine()) != null)
     
                {
     
                    System.out.println(ligne);
                    world[i][j] = Integer.parseInt(ligne);
                    j = j+1;
                    if (j==3) {
                    	j=0;
                    	i=i+1;
                    }
     
     
                }
     
                br.close();
     
     
     
             }     
     
            catch (Exception e)
     
            {
     
                System.out.println(e.toString());
     
            }
     
     
            //affichage du tableau
     
            for (int i = 0; i<3;i++) {
            	for(int j=0;j<3;j++) {
            		System.out.print(world[i][j] + "  ");
            	}
            	System.out.println("");
            }
        }
    }

    Merci beaucoup pour ton aide ludomacho en fait je voulais utiliser un file parce que je dois lire dans un fichier dont je ne connais pas le nombre d'éléments et je voulais donc avoir quelque chose de plus dynamique qu'un simple tableau pour ne pas avoir de problème d'espace. Mais j'ai une question. En fait je me suis rendu compte de j'avais écris "un pile" alors que je voulais écrire "une file". Est-il possible d'utiliser une pile? pour ne pas avoir un compteur qui se décrémente mais qui s'incrémente.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Je m'excuse mais j'ai oublié de préciser que mon fichier devait contenir une matrice et donc je dois pouvoir gérer les cas où il y a plusieurs nombres par lignes. Avec le fichier qui contient un chiffre par colonne ça marche à la perfection mais lorsque je lis mon fichier avec une matrice, il me donne l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.util.EmptyStackException
    	at java.util.Stack.peek(Stack.java:102)
    	at java.util.Stack.pop(Stack.java:84)
    	at Main.main(Main.java:69)
    Je sais que je demande beaucoup de question mais je suis débutant et j'ai un peu de mal. Je te remercie encore pour ton aide

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Bonjour,

    Voici une version qui prend en compte tes remarques:

    Tu peux utiliser un ArrayList pour stocker ta matrice car avec ArrayList pas besoin de préciser la taille au départ. Et comme tu veux une matrice tu crées une variable : ArrayList<ArrayList<Integer>> matrice = new ArrayList<ArrayList<Integer>>();
    Une fois que tu as lu ton fichier tu peux si tu le désires créer ton tableau classique et le remplir avec les valeurs de matrice.....

    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
     
    import java.io.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    public class Main {
     
    	public static void main(String[] args) {  
    		final ArrayList<ArrayList<Integer>> matrice = new ArrayList<ArrayList<Integer>>();
    		String fichier = "fichier.txt";
    		//lecture du fichier texte
    		try {
    			InputStream ips = new FileInputStream(fichier);
    			InputStreamReader ipsr = new InputStreamReader(ips);
    			BufferedReader br = new BufferedReader(ipsr);
    			String ligne;
    			ArrayList<Integer> ligneTemp;
    			while ((ligne = br.readLine()) != null) {
    				System.out.println(ligne);
    				String[] temp = ligne.split(" ");
    				ligneTemp = new ArrayList<Integer>();
    				for (int i=0; i<temp.length;i++)
    					ligneTemp.add(Integer.parseInt(temp[i]));
    				matrice.add(ligneTemp);
    			}
    			br.close();
    		}     
    		catch (Exception e) {
    			System.out.println(e.toString());
    		}
    		//affichage du tableau de ArrayList
    		System.out.println("");
    		System.out.println("");
    		int[][] world = new int[matrice.size()][matrice.get(0).size()];
    		System.out.println("Affichage du resultat avec ArrayList:");
    		for (int i = 0; i<matrice.size();i++) {
    			for(int j=0;j<matrice.get(0).size();j++) {
    				System.out.print(matrice.get(i).get(j) + "  ");
    				world[i][j] = matrice.get(i).get(j);
    			}
    			System.out.println("");
    		}
    		//affichage du tableau final
    		System.out.println("");
    		System.out.println("");
    		System.out.println("Affichage du resultat avec tableau:");
    		for (int i = 0; i<world.length;i++) {
    			for(int j=0;j<world[0].length;j++) {
    				System.out.print(world[i][j] + "  ");
    			}
    			System.out.println("");
    		}
    	}
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup ça marche à merveille et grâce à ton code, j'ai compris certaines choses qui me paraissaient bizarres. Encore merci pour ton aide

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/11/2010, 17h12
  2. Réponses: 2
    Dernier message: 26/11/2006, 10h51
  3. Réponses: 4
    Dernier message: 12/06/2006, 10h09
  4. [C#] Connaitre la colonne qui est cliquée dans un ListView
    Par omlip dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/12/2004, 20h01
  5. Ne pas afficher un champs qui est vide dans ma BD
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 27/04/2004, 11h40

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