begin process at 2012 02 15 10:35:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Algorithme

 > 

Maths

 > 

Initialiser une matrice avec un fichier texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Initialiser une matrice avec un fichier texte

mercredi 10 janvier 2007 à 19:25:25 | Initialiser une matrice avec un fichier texte

afalaze

Bonjour;
Je cherche à initialiser une matrice carrée à l'aide d'un fichier texte de la forme suivante
-------------- fichier.txt ---------------
3
L 1 2 3
L 1 2 5
L 0 4 9
------------------------------------------

La première ligne represente la dimension de la matrice carrée
Les lignes suivantes les valeurs de chaque ligne de la matrice, "L" pour signaler les lignes à traiter.
Voici le listing de Matrice.java :

------------------------------ Matrice.java --------------------------


import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.lang.Integer;

public class Matrice
{
    int[][] matrice;
    int  dimMatrice = 0;
   
    // Affichage du contenu de la matrice
    private void affichage(int dim)
    {
        for(int i=0; i<dim; i++)
        {
            for(int j=0; j<dim; j++)
            {
                System.out.print(matrice[i][j] +"\t");               
            }
            System.out.println();
        }
    }
   
    // Dimension du graphe
    public int getDimension()
    {
        return dimMatrice;
    }
   
    // Initialiser une matrice depuis un fichier texte
    public Matrice(String fichier) throws IOException
    {
        BufferedReader entree = new BufferedReader(new FileReader(fichier));
        int nbLigne = 0; //Compteur de boucle       
        String lignelue = null;
        while((lignelue = entree.readLine()) != null)
        {
            StringTokenizer tok = new StringTokenizer(lignelue, " ");               
            while(tok.hasMoreTokens())
            {
                if(nbLigne == 0)
                {
                    //dimMatrice = Integer.parseInt(lignelue);
                    dimMatrice = Integer.parseInt(tok.nextToken());
                    System.out.println("La dimension de la matrice : "+dimMatrice);
                    nbLigne++;
                }   
                else
                {   
                    matrice = new int[dimMatrice][dimMatrice];       
                    if(tok.nextToken() == "L")
                    {
                        tok.nextToken();
                    }
                    for(int j=0; j<dimMatrice; j++)
                    {
                        matrice[nbLigne-1][j] = Integer.parseInt(tok.nextToken());
                    }
                    nbLigne++;   
                }       
            }   
                   
        }       
        entree.close();
    }
   
    public static void main(String argc[]) throws IOException
    {
        System.out.println("Initialisation de la matrice");
        Matrice matrice = new Matrice("fichier.txt");
        matrice.affichage(matrice.getDimension());
    }
}

-------------------------------------------------------------------------------

A l'execution, j'obtien bien la dimension de la matrice mais celle celle-ci s'initialise mal à l'exception de la dernier ligne :

java matrice
Initialisation de la matrice
La dimension de la matrice : 3
0       0       0
0       0       0
0       4       9


Je pense que je me sert mal de la classe StringTokenizer
Aidez moi à y voire plus claire.
Merci
   
mercredi 10 janvier 2007 à 20:46:14 | Re : Initialiser une matrice avec un fichier texte

kaloway

la comparaison d'une chaine de caractère ne se fait pas avec "==" mais avec equals.

exemple tok.nextToken().equals("L")
jeudi 11 janvier 2007 à 01:27:09 | Re : Initialiser une matrice avec un fichier texte

afalaze

Merci koloway pour m'avoir repondu si vite.
J'ai bien essayé ta suggestion en remplaçant
if(tok.nextToken() == "L")
par
if(tok.nextToken().equals( "L"))

mais à l'execution j'ai le message suivant :
Initialisation de la matrice
La dimension de la matrice : 3
Exception in thread "main" java.util.NoSuchElementException
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
        at Matrice.<init>(Matrice.java:75)
        at Matrice.main(Matrice.java:88)
Press any key to continue...

En rectifiant "L" par 'L' :
if(tok.nextToken().equals( 'L'))
Je revien à la case départ c.a.d :
java matrice
Initialisation de la matrice
La dimension de la matrice : 3
0       0       0
0       0       0
0       4       9

Donc je ne comprend pas pourquoi la troisième ligne est traitée et non pas les 2 premières ?
jeudi 11 janvier 2007 à 11:17:56 | Re : Initialiser une matrice avec un fichier texte

afalaze

Réponse acceptée !
Je vien de trouver la faille :
La matrice est écrasée à chaque passage dans le bloc else

else
                {   
                    matrice = new int[dimMatrice][dimMatrice];       
                    if(tok.nextToken() == "L") .....

Il suffit de remettre
matrice = new int[dimMatrice][dimMatrice]; dans le bloc if pour que la matrice soit créee une seule fois.

if(nbLigne == 0)
                {
                    //dimMatrice = Integer.parseInt(lignelue);
                    dimMatrice = Integer.parseInt(tok.nextToken());
                    System.out.println("La dimension de la matrice : "+dimMatrice);
                   
matrice = new int[dimMatrice][dimMatrice];   
                    nbLigne++;                  
                }   
                else
                {    ......

Ainsi à l'execution :

Initialisation de la matrice
La dimension de la matrice : 3
1       2       3
1       2       5
0       4       9
Press any key to continue...
jeudi 29 mars 2007 à 17:46:54 | Re : Initialiser une matrice avec un fichier texte

foutayeni

Bonsoir
est ce que t'as trouvé le problème ou pas encore?


Cette discussion est classée dans : fichier, java, int, matrice, dimmatrice


Répondre à ce message

Sujets en rapport avec ce message

Creer un lien entre deux fichiers [ par Tom89 ] Bonjour,Je suis dsl de poser une question aussi triviale mais je n'arrive pas à trouver de réponses dans les tutorials.J'ai deux fichiers Tableaux.jav [STRUCTURE] Comment on fait ? [ par Ilsundal ] Bonjour a tous, ca fait maintenant 3ans 1/2 que je code en c/c++ et je commence le JAVA, j'aimerais savoir comment ca fonctionne pour les structure ! récupérer une matrice [ par asram ] j'ai calculer des coordonnées eulidiennes entre les différent noeuds et j'ai obtenu le fichier ci-dessous.mon problém est d'en récupérer une matrice e extraction des données d'une matrice [ par asram ] bonjour,j'ai un probléme et je sollicite aide.j'ai mon fichier et je voudrai aprés l'avoir ouvert en extraire le contenu en java.lalecture du fichier obtenir sous forme de matrice [ par asram ] salu,mon probléme c'est comment créer une matrice à partir d'un fichier en java?je sollicite aide.je débutant en java.merci voici ce fichier: --> Nom trier une matrice en java [ par asram ] bonjour,j'ai un fichier sous forme de matrice et je voudrai trier de maniére croissante pour pour tracer la CDF(cummulative distribution fonction).com WebService java fichier xml [ par cameleon044 ] Bonjour, Etant débutant en webservice java, je m'adresse à vous afin d'obtenir quelques petits conseils. Je dois réaliser un webservice qui, après av fichier en java [ par sorcier2 ] j'ai un problème en java.j'aimerais bien que vous m'aidiez à le résoudre. on me donne une class "Notes" d'attributs nom, matiere, note; ensuite une cl copier un fichier dll avec java [ par avg ] Salut à tous j'ai une applet qui est dans un jar signé tout va bien mais je veut extraire un fichier dll qui est dans le jar puis le copier sur le di code en java(netbeans) [ par jenifer17 ] je veux savoir comment je peux faire en java (netbeans) un création d'un nouvel fichier ouvrage disponible dans une bibliotheque;ces ouvrages sont déc


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,777 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales