[JAVA]Probleme initialisation d'une matrice

Fermé
Suze - 17 janv. 2008 à 15:58
 Suze - 17 janv. 2008 à 18:28
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

Personne ne peut m'aider ...? :(
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 janv. 2008 à 17:18
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
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 janv. 2008 à 17:40
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
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 janv. 2008 à 17:51
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
Tres bonne page, merci beaucoup a toi ;)
0