[JAVA]Probleme initialisation d'une matrice

Suze -  
 Suze -
Bonjour,

je n'arrive pas a résoudre mon probleme qui est le suivant :

Dans une premiere classe que voici nommé xxxxx, j'ai ecrit :

public class xxxxx {

private int i;
private int j;
private char[][] map;

//méthodes
public void initMap(){
for(i=1; i<this.map[0].length; i++){
for(j=1; j<this.map.length; j++){
this.map[i][j] = '.';
}
}

}
}

Puis dans une autre j'ai ecrit :

public class TestTP {

public static void main(String[] args) {
char map2[][] = new char[10][10];
map2.initMap(); // => (ici)
}

}

Mais ca ne marche pas, l'erreur se fait au niveau de (ici) et le testTP ne m'initialise donc pas ma matrice map2.

Pourriez vous m'iadez a resoudre ce probleme svp ??

Merci d'avance a tous ;)

Suze
A voir également:

7 réponses

Suze
 
Personne ne peut m'aider ...? :(
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Il faut que tu initialises ton tableau dans un constructeur:

public class Prout {

private int i;
private int j;
private char[][] map;


public Prout()
{
    this.map = new char[10][10];
}

//méthodes
public void initMap()
{
          //ATTENTION LES INDEX DE TABLEAUX COMMENCENT A 0 ET J'AI CORRIGE D'AUTRES TRUCS AUSSI
          for(i=0; i<this.map.length; i++)
          {
                for(j=0; j<this.map[i].length; j++)
               {
                       this.map[i][j] = '.';
                }
           }
}


Ensuite pour ce code:
public class TestTP {

public static void main(String[] args) {
char map2[][] = new char[10][10];
map2.initMap(); // => (ici)
}

map2 est de type char[][] donc il n'a pas de méthode initMap(), par contre les objets de type Prout ont cette méthode, je pense que tu voulais faire ça:

public class TestTP 
{

         public static void main(String[] args) 
        {
               Prout p = new Prout();
               p.initMap();
        }
}
}
D'ailleurs autant mettre le code de initMap dans le constructeur de Prout.
0
Suze
 
Alors tout d'abord un grand MERCI :)
Ca y'est ca marche ...

Pour l'histoire des tableau qui commence a 0 ne t'en fais pas je le sais mais c'est as pour rien que j'ai mis 1 donc la pas de prob.
Ensuite le coup du constructeurs ca m'enerve un peu car quand meme je le creait mon tableau dans la classe testTP donc je comprennais pas ... mais bon, tout marche nikel, encore merci a toi ...

:)

Suze
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Ah non, tu créais un autre tableau qui n'avait strictement rien à voir ;-)

public class TestTP {

      public static void main(String[] args) {
char map2[][] = new char[10][10];
map2.initMap(); // => (ici)
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Suze
 
d'accord, je viens de comprendre un truc en plus alors ... le fait que j'utilise un constructeur permet de lier mon tableau ainsi creer a la classe ou j'ai mis initMap ?? :)

Encore merci a toi :)
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
C'est pas vraiment ça, un constructeur permet d'initialiser un objet. Et typiquement, initialiser un objet, c'est initialiser les variables que contient l'objet.
Si je devais être plus juste maus moins compréhensible: initialiser un objet, c'est initialiser les objets que contient l'objet.

Un constructeur est simplement une fonction qui ne retourne rien et qui s'execute à la création de l'objet.

Tu saisis?
Je te conseille de lire cette page, ça permet de bien se fixer les idées sur ce qui est en jeu dans l'orienté objet:
http://sebsauvage.net/comprendre/objet/index.html
0
Suze
 
Tres bonne page, merci beaucoup a toi ;)
0