Probleme de tableaux.

canvin Messages postés 2 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 28 octobre 2003 - 27 oct. 2003 à 20:59
canvin Messages postés 2 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 28 octobre 2003 - 28 oct. 2003 à 01:14
Bonojour,
Voici mon problème. j'ai fait une classe tableaux avec un constructeur. :

public class Tableau{
    
    private int tab[];
    
    public Tableau(int _taille) {
        tab = new int [_taille];
    }

public void setElementAt(int a,int b) {
        this.tab[a]=b;
    }


Ensuite j'ai cree une classe personne et je cree une grille de 5 valeurs.

public class Joueur {
    private String nom;
     public int grille[];
    
    public Joueur() {
        int val;
        
        System.out.println("Entrez votre nom");
        nom=Clavier.lireChaine();
                
        Tableau grille=new Tableau(5);
        for (int j=1;j<5;j++) {
            System.out.println("Entrez votre nombre compris entre 1 et 29");
            val=Clavier.lireEntier();
            if(val>0 && val<=29)
                grille.setElementAt(j,val);
        }

voila mon probleme : quand je fait mon main (dans la classe personne).

public static void main(String[] args) {
        Joueur P1=new Joueur();
        System.out.println("le tableau est " + P1.grille);
    }


il me dit le tableau est null (le debugger m'indique apparment que grille [] nest jamais modifié ???). Comment faire pour bien remplir mon tableau, en gardant ces 2 classes. En vous remerciant. Canvin

2 réponses

cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
27 oct. 2003 à 23:02
Salut

tu fais une pitite confusion entre différents types :
tu déclares gille comme étant un int[]
public int grille[];
ensuite, tu la déclares comme étant un Tableau
Tableau grille=new Tableau(5);
de plus, comme elle est déclarée 2 fois, ici avec P1.grille, tu appelles le public int[] qui lui est bien toujours à null

chtite modif :

public class Joueur {
private String nom;
public Tableau grille;

public Joueur() {
int val;

System.out.println("Entrez votre nom");
nom=Clavier.lireChaine();

grille=new Tableau(5);//sans redéclarer la variable!!!!!
for (int j=1;j<5;j++) {
System.out.println("Entrez votre nombre compris entre 1 et 29");
val=Clavier.lireEntier();
if(val>0 && val<=29)
grille.setElementAt(j,val);
}

PS : je vois pas l'interêt de ta classe Tableau : en effet, comme ton int[] tab est private, tu y a accès juste en écriture avec la méthode setElementAt et puis c'est tout... pas de lecture, sauf dans la classe Tableau...

DOBELIOU
0
canvin Messages postés 2 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 28 octobre 2003
28 oct. 2003 à 01:14
Merci beaucoup...
Pour ma classe tableau ca fait partie d'une classe ou je dispose de tri et d'un getElemenAt, main et dautres méthodes. J'ai compris mon erreur, parce qu'en fait je focalisais sur la declaration de grille en tant int [] et non de type Tableaux.
Merci. Canvin (Débutant java).
0
Rejoignez-nous