Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplir tableau

Sujet résolu
    17 novembre 2010 à 15:58:14

    while( (ligne = br.readLine()) != null ) {
    				buffer = new Tirage();
    				
    				String str[] = ligne.split(";");
    				
    				buffer.setAnneNumTirage(str[0]);
    				buffer.setNumTirage(Integer.parseInt(str[1]));
    				buffer.setJourTirage(str[2]);
    				buffer.setDateTirage(formatter.parse(str[3],pos));
    				buffer.setDateForclusion(formatter.parse(str[4],pos));
    				for( int i=0 ; i<7 ; ++i ) {
    					numGagn[i] = Integer.parseInt(str[i+5]);
    				}
    				buffer.setNumGagnants(numGagn);
    				buffer.setCombiGagnanteCroiss(str[12]);
    				if( !str[13].isEmpty() )
    					buffer.setNumJoker(Integer.parseInt(str[13]));
    				for( int i=0 ; i<7 ; ++i ) {
    					nbGpR[i] = Integer.parseInt(str[2*i+14].replace(',','.'));
    					rpR[i] = Float.parseFloat(str[2*i+15].replace(',','.'));
    				}
    				buffer.setNbGagnantsParRang(nbGpR);
    				buffer.setRapportParRang(rpR);
    				if( !str[28].isEmpty() )
    					buffer.setNumJokerPlus(Integer.parseInt(str[28].replaceAll("\\s", "")));
    				buffer.setDevise(str[29]);
    				
    				
    				tabTirage.add(buffer);
    			}
    



    Voila mon problème, je me sert de cette boucle pour remplir un tableau de "Tirages" à partir d'un fichier, la lecture et le remplissage sont bons, mon problème est que lorsque j'ai fini de remplir le tableau, toutes mes valeurs sont egales à la dernières valeur ajoutée au tableau.

    Je pense que mon problème est au niveau de mon buffer qui fait reference à touts les cases de mon tableau, mais je ne voit pas pourquoi vu que je fait une nouvelle allocation à chaque tour de boucle avec un new.

    Help please.
    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2010 à 16:13:44

      tu devrais remplacer cette ligne :
      buffer = new Tirage();

      par celle ci : Tirage buffer = new Tirage();

      et enlever le "Tirage buffer;" qui est hors de la boucle.
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        17 novembre 2010 à 16:16:00

        Merci pour ta réponse willard.

        J'ai essayé mais le problème est toujours là.

        D'autres idées ?
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2010 à 16:30:15

          Pourrait tu nous montrer ta classe tirage et ses accesseurs ?

          - Quel est le type de ton tableau "TabTirage" ?
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.
            17 novembre 2010 à 17:15:24

            tabTirage est de type Vector<Tirage>

            classe Tirage :

            import java.util.*;
            
            public class Tirage {
            	
            	private String anneNumTirage;
            	public String getAnneNumTirage() {
            		return anneNumTirage;
            	}
            	public void setAnneNumTirage(String value) {
            		anneNumTirage=value;
            	}
            	
            	private int numTirage;
            	public int getNumTirage() {
            		return numTirage;
            	}
            	public void setNumTirage(int value) {
            		numTirage=value;
            	}
            	
            	private String jourTirage;
            	public String getJourTirage() {
            		return jourTirage;
            	}
            	public void setJourTirage(String value) {
            		jourTirage=value;
            	}
            	
            	private Date dateTirage;
            	public Date getDateTirage() {
            		return dateTirage;
            	}
            	public void setDateTirage(Date value) {
            		dateTirage=value;
            	}
            	
            	private Date dateForclusion;
            	public Date getDateForclusion() {
            		return dateForclusion;
            	}
            	public void setDateForclusion(Date value) {
            		dateForclusion=value;
            	}
            	
            	private int[] numGagnants;
            	public int[] getNumGagnants() {
            		return numGagnants;
            	}
            	public void setNumGagnants(int[] value) {
            		numGagnants=value;
            	}
            	
            	private String combiGagnanteCroiss;
            	public String getCombiGagnanteCroiss() {
            		return combiGagnanteCroiss;
            	}
            	public void setCombiGagnanteCroiss(String value) {
            		combiGagnanteCroiss=value;
            	}
            	
            	private int numJoker;
            	public int getNumJoker() {
            		return numJoker;
            	}
            	public void setNumJoker(int value) {
            		numJoker=value;
            	}
            	
            	private int[] nbGagnantsParRang;
            	public int getNbGagnantsParRang(int rang) {
            		return nbGagnantsParRang[rang-1];
            	}
            	public void setNbGagnantsParRang(int rang,int value) {
            		nbGagnantsParRang[rang-1]=value;
            	}
            	public void setNbGagnantsParRang(int[] value) {
            		nbGagnantsParRang=value;
            	}
            	
            	private float[] rapportParRang;
            	public float getRapportParRang(int rang) {
            		return rapportParRang[rang-1];
            	}
            	public void setRapportParRang(int rang,float value) {
            		rapportParRang[rang-1]=value;
            	}
            	public void setRapportParRang(float[] value) {
            		rapportParRang=value;
            	}
            	
            	private int numJokerPlus;
            	public int getNumJokerPlus() {
            		return numJokerPlus;
            	}
            	public void setNumJokerPlus(int value) {
            		numJokerPlus=value;
            	}
            	
            	private String devise;
            	public String getDevise() {
            		return devise;
            	}
            	public void setDevise(String value) {
            		devise=value;
            	}
            	
            	Tirage() {
            		numGagnants = new int[7];
            		nbGagnantsParRang = new int[7];
            		rapportParRang = new float[7];
            	}
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2010 à 17:20:44

              Et si tu utilise une ArrayList au lieu d'un vector ?
              • Partager sur Facebook
              • Partager sur Twitter
              J'ai tous les badges d'OpenClassrooms.
                17 novembre 2010 à 17:26:06

                Le problème venait du remplissage du tableau, les valeurs que je prennai étaient toutes les mêmes au niveau des valeurs récupérées dans des tableaux.

                Correction :

                while( (ligne = br.readLine()) != null ) {
                    Tirage buffer = new Tirage();
                    int[] numGagn = new int[7];
                    int[] nbGpR = new int[7];
                    float[] rpR = new float[7];
                [...]
                
                • Partager sur Facebook
                • Partager sur Twitter

                Remplir tableau

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown