begin process at 2010 03 18 07:49:41
  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 ! Java csv [ par matriyouchka1971 ] Bonjour tous le monde; j'ai crée un fichier csv dans un servlet java aprés je veux ouvrir ce fichier (depuis la servlet java) dans une fenêtre indépen Manipulation des fichiers [ par morayma ] Bonjour,J'ai des programmes en C que je dois codifier en Java. Il s'agit de créer un fichier structuré, de rechercher des informations dans ces fichie [Java] passage de paramètres et fichiers [ par harleen ] Bonjour, Je vous écris afin de vous poser un problème qui me parait assez siple, mais auquel je ne parviens pas à trouver de solution précise. En ef Covertir une Donnée d'un fichier en entier [ par majormadidi1984 ] Bonjour tout le monde, En effet j'essaie de convertir un string que j'ai récupéré dans un fichier texte pour le convertir un entier, mais je n'y parv ecrire dans un fichier txt en java [ par baldemm ] Bonjour tt le monde g ss bloqué depuis hier Mon problème: g lu tte les lignes d'un fichier txt mnt il faut les ecrire tte ds un nouveau fichier txt.Le Ecriture dans un fichier distant [ par nehla ] Salut Je veux ecrire dans un fichier qui existe dans un serveur. J'ai inséré le bout de code suivant dans un programme java :             URL url= new java xml [ par eyakat ] Bonsoir, J'ai un problème d'exécution au niveau de mon code java pour lire un fichier xmlaprès de saisir le nom du fichier xml pour l'exécuter il m'af java.lang.NullPointerException [ par sunita85 ] Salut à tousj'ai le code suivant qui contient deux méthodes une qui copie un fichier dans un autre et une qui enregistre un nouveau fichier .Je veux e


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,624 sec (4)

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