Probleme StringTokenizer et tableau

Probleme StringTokenizer et tableau - Java - Programmation

Marsh Posté le 04-04-2011 à 20:05:46    

Bonsoir tout le monde, j'ai un problème :
j'ai un programme qui lit un fichier texte, et ensuite, je doit stocker des données contenu dans ce texte dans un tableau de dimension 2(matrice). Ligne par ligne, je met la première ligne de la matrice, etc... Mais le problème est qu'en faisant un system.out.println du tableau comme ci dessous, ca marche, mais si je fait un affichage en dehors de ma boucle, toutes les valeurs de ma matrice sont 0 et je ne vois pas pourquoi :

Code :
  1. if(cptLigne>3){
  2.    st = new StringTokenizer(ligne, " " );
  3.    i=0;
  4.    j=0;
  5.    while(st.hasMoreTokens()){
  6.       tab[j][i]=Integer.parseInt(st.nextToken());
  7.       System.out.println(tab[j][i]);
  8.       i++;
  9.    }
  10. }
  11. j++;
  12. cptLigne++;


 
Merci d'avance!


Message édité par bryan63 le 04-04-2011 à 21:00:57
Reply

Marsh Posté le 04-04-2011 à 20:05:46   

Reply

Marsh Posté le 05-04-2011 à 22:22:45    

il manque du code, mais il ne faut pas reinitialiser j a 0 chaque tour ... Dans cet example, tu remplies tjrs la premiere ligne ...

Reply

Marsh Posté le 06-04-2011 à 00:23:57    

mr simon a écrit :

il manque du code, mais il ne faut pas reinitialiser j a 0 chaque tour ... Dans cet example, tu remplies tjrs la premiere ligne ...


 
Alors voila ma classe Main:

Code :
  1. import java.io.File;
  2. import java.io.IOException;
  3. public class Main {
  4. static int tab[][] = new int[7][24];
  5. public static void main(String[] args) throws IOException {
  6.  File f = new File("test.pgm" );
  7.  Matrice m = new Matrice(f);
  8.  tab=m.getTab();
  9.  System.out.println(tab[1][1]);
  10. }
  11. }


 
Et ma classe Matrice :

Code :
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.util.StringTokenizer;
  7. public class Matrice {
  8. private int hauteur;
  9. private int largeur;
  10. private int Vmax;
  11. private int tab[][];
  12. public Matrice(File pgm) throws IOException{
  13.     int cptLigne=0,i,j=0;
  14.     BufferedReader lecteurAvecBuffer = null;
  15.     String ligne;
  16.     StringTokenizer st;
  17.     try{
  18.      lecteurAvecBuffer = new BufferedReader(new FileReader(pgm)); //Permet de charger le fichier
  19.     }
  20.     catch(FileNotFoundException exc){
  21.      System.out.println("Erreur d'ouverture" );
  22.     }
  23.    
  24.     while ((ligne = lecteurAvecBuffer.readLine()) != null){ //Parcourir le fichier
  25.      if(cptLigne==1)  //Definit la largeur
  26.       largeur=Integer.parseInt(ligne);
  27.    
  28.      if(cptLigne==2) //Definit la hauteur
  29.       hauteur=Integer.parseInt(ligne);
  30.    
  31.      tab = new int[hauteur][largeur];
  32.    
  33.      if(cptLigne==3) //Definit Vmax
  34.       Vmax=Integer.parseInt(ligne);
  35.    
  36.      if(cptLigne>3){ //Construit la matrice largeur*hauteur avec le contenu du fichier  
  37.       st = new StringTokenizer(ligne, " " );
  38.       i=0;
  39.       while(st.hasMoreTokens()){
  40.        tab[j][i]=Integer.parseInt(st.nextToken());
  41.        System.out.print(tab[j][i]);
  42.        i++;
  43.       }
  44.       System.out.println("\n" );
  45.       j++;
  46.      }
  47.      cptLigne++;
  48.      } 
  49.     }
  50. public int[][] getTab(){
  51.  return tab;
  52. }
  53. }


 
Le contenu du fichier:
P2
24
7
15
0 0  0  0  0  0  0  0  0 0  0  0  0  0  0  0  0 0  0  0  0  0  0  0
0 3  3  3  3  0  0  7  7 7  7  0  0 11 11 11 11 0  0 15 15 15 15  0
0 3  0  0  0  0  0  7  0 0  0  0  0 11  0  0  0 0  0 15  0  0 15  0
0 3  3  3  0  0  0  7  7 7  0  0  0 11 11 11  0 0  0 15 15 15 15  0
0 3  0  0  0  0  0  7  0 0  0  0  0 11  0  0  0 0  0 15  0  0  0  0
0 3  0  0  0  0  0  7  7 7  7  0  0 11 11 11 11 0  0 15  0  0  0  0
0 0  0  0  0  0  0  0  0 0  0  0  0  0  0  0  0 0  0  0  0  0  0  0
 
Or quand je fait le "System.out.println(tab[1][1])" dans le main, il devrait m'afficher 3, or il m'affiche 0. En fait, il m'affiche tout le temps 0... sauf dans la boucle où j'ai bien ce que je veux.
 
Merci d'avance!

Reply

Marsh Posté le 06-04-2011 à 01:00:46    

tu alloues un tableau a chaque ligne (ligne 35)

Reply

Marsh Posté le 06-04-2011 à 07:32:57    

Ah oui, tout simplement, merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed