afalaze
Messages postés3Date d'inscriptionsamedi 13 novembre 2004StatutMembreDernière intervention11 janvier 2007
-
10 janv. 2007 à 19:25
foutayeni
Messages postés4Date d'inscriptiondimanche 3 juillet 2005StatutMembreDernière intervention23 septembre 2009
-
29 mars 2007 à 17:46
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 :
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());
}
}
afalaze
Messages postés3Date d'inscriptionsamedi 13 novembre 2004StatutMembreDernière intervention11 janvier 2007 11 janv. 2007 à 01:27
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.(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 ?