Transfert d'une matrice vers hashSet

firas scofield Messages postés 19 Statut Membre -  
josaphat_mayuba Messages postés 17 Statut Membre -
Bonjour, j'ai une classe "grille_chiffre" qui rempli une matrice par des valeurs aléatoire , ensuite dans la classe fille "urne" je doit transférer les valeurs de la matrice dans une hashSet donc j'ai besoin de faire appel à super.initialiser(). le problème et quand j' afficher la matrice via la classe grille w le hashSet via la classe urne il ne sont pas identiques et je trouve des valeurs différents.

voila le contenu des deux classes:

import java.util.*;
public class grille_chiffre {
protected Object[][] gc;
public grille_chiffre(){
    gc=new Object[5][5];
}
 
public Object[][] getGc() {
    return gc;
}
 
public void setGc(Object[][] gc) {
    this.gc = gc;
}
 
public void initialiser(){
    int nb;
    double nbd;
    for(int i=0;i<5;i++)
        for(int j=0;j<5;j++){
            do{
         nbd=Math.random()*(100-0);
         nb=(int)nbd;
        }while(existe(nb));
            gc[i][j]=nb;
        }
}
public boolean existe(Object x){
    int i=0;
    boolean trouve=false;
    while(i<5 && !trouve){
        int j=0;
        while(j<5 && !trouve){
            if(gc[i][j]==x)
                trouve=true;
            else j++;
        }
        i++;
    }
    return trouve;
}
public void affichage(){
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            System.out.print(gc[i][j]+" ");
        }
        System.out.println();
    }
}
}


import java.util.*;
public class urne2 extends grille_chiffre{
private HashSet<Object> ur;
public urne2(){
    ur=new HashSet<Object>();
}
public void initialiser(){
    super.initialiser();
    for(int i=0;i<5;i++)
        for(int j=0;j<5;j++){
            ur.add(super.getGc()[i][j]);
        }                                      
    System.out.println();
     
}
public void affichage(){
    Object[]e=ur.toArray();
    for(int i=0;i<e.length;i++)
        System.out.print(e[i]+" ");
}
}

Main
grille_chiffre g=new grille_chiffre();
urne2 ur=new urne2();
g.initialiser();
g.affichage();
System.out.println("Urne");
ur.initialiser();
ur.affichage();


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. Utilisateur anonyme
     
    Salut,

    Si tu crées une instance de
    grille_chiffre
    , elle n'a rien à voir avec
    urne2
    même si elle est fille de
    grille_chiffre
    (l'instanciation de
    urne2
    créé une nouvelle instance de
    grille_chiffre
    )
    0
  2. josaphat_mayuba Messages postés 17 Statut Membre 1
     
    salut, je vois que tu réinitialise le tableau qui crée un nouveau tableau avec des contenus différents vu c'est du random. tu peux appelé grille_chiffre directement
    import java.util.*;
    
    public class urne2  {
      
     protected Object[][] gc;
    
     public urne2() {
      super(); 
     }
    
     public Object[][] getGc() {
      return gc;
     }
    
     public void setGc(Object[][] gc) {
      this.gc = gc;
     }
    
     public void affichage() {
    
      for (int i = 0; i < 5; i++) {
       for (int j = 0; j < 5; j++) { 
        System.out.print(getGc()[i][j] + " ");
       }
       System.out.println();
      }
    }
     }
    0
    1. josaphat_mayuba Messages postés 17 Statut Membre 1
       
      main
      	grille_chiffre g = new grille_chiffre();
      		urne2 ur = new urne2();
      		g.initialiser();
      		g.affichage();
      		ur.setGc(g.gc);
      		System.out.println("Urne");
      		ur.affichage();
      0
    2. josaphat_mayuba Messages postés 17 Statut Membre 1
       
      tu peux maintenant mettre ton hashset si tu veux pour éviter de faire juste deux fois for
      0