Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[débutant] passé un tableau en parametre

4 réponses
Avatar
yoyo
bonjour,

voilà j'essaye de faire une procédure du type

public static void init(int jeu[][])
{
int i,j;
jeu = new int[8][8];

for(i=0; i<=3; i++)
{
for (j=0; i<=8; j++)
{
if(i%2>0)
if(j%2>0)
print('x');
else
{
if(i%2==0)
if(j%2==0)
print('x');
}


}
}
}




mon soucis c'est que dés que je l'apelle comme ceci

init(jeu[][];

mais la jvm me renvoit ceci '.class' expected
init(jeu[][]);



merci de vos conseils ?

4 réponses

Avatar
Sylvain SF
a écrit :
bonjour,

voilà j'essaye de faire une procédure du type

public static void init(int jeu[][]){
int i,j;
jeu = new int[8][8];
...
}

mon soucis c'est que dés que je l'apelle comme ceci
init(jeu[][];
la jvm me renvoit ceci '.class' expected



[][] fait parti du type de la variable, pas du nom de celle-ci.
si vous voulez transmettre la variable 'jeu', écrivez simplement:

init(jeu);

... sous reserve que 'jeu' existe là où l'appel est réalisé,
or "init" instantie cette variable (peut être en double) et
ce tableau paramètre (cette variable 'jeu') peut pas un
paramètre variant, vous perdez donc toute l'initialisation
à la sortie de "init"

pour faire simple codez:

public static int[][] init(int kColumn, int kRow){
int[][] array = new int[kColumn][kRow];
// faire quelque chose du tableau
// le code posté n'a pas de sens
return array;
}

// et utilisez quelque part:

int[][] jeu = init(8, 8);

Sylvain.
Avatar
yoyo
Sylvain SF wrote:

a écrit :
bonjour,

voilà j'essaye de faire une procédure du type

public static void init(int jeu[][]){
int i,j;
jeu = new int[8][8];
...
}

mon soucis c'est que dés que je l'apelle comme ceci
init(jeu[][];
la jvm me renvoit ceci '.class' expected



[][] fait parti du type de la variable, pas du nom de celle-ci.
si vous voulez transmettre la variable 'jeu', écrivez simplement:

init(jeu);



ok!!! j'avais essayé mais le traitement s'affichait pas, je viens de trouvé
mon erreur.

... sous reserve que 'jeu' existe là où l'appel est réalisé,
or "init" instantie cette variable (peut être en double) et
ce tableau paramètre (cette variable 'jeu') peut pas un
paramètre variant, vous perdez donc toute l'initialisation
à la sortie de "init"



oui en effet elle est en double mais int jeux est juste un parametre, donc
une variable locale.

pour faire simple codez:

public static int[][] init(int kColumn, int kRow){
int[][] array = new int[kColumn][kRow];
// faire quelque chose du tableau
// le code posté n'a pas de sens
return array;
}

// et utilisez quelque part:

int[][] jeu = init(8, 8);

Sylvain.


Avatar
Sylvain SF
a écrit :

oui en effet elle est en double mais int jeux est juste un parametre, donc
une variable locale.



précisément non.

void foo(int a){
int b;
}

"a" est un paramètre.
"b" est une variable locale.

ce n'est pas pinaillage mais vocabulaire de base
et pour discuter sur un NG il est utile de s'entendre
sur le vocabulaire.

SF.
Avatar
yoyo
Sylvain SF wrote:

a écrit :

oui en effet elle est en double mais int jeux est juste un parametre,
donc une variable locale.



précisément non.

void foo(int a){
int b;
}

"a" est un paramètre.
"b" est une variable locale.

ce n'est pas pinaillage mais vocabulaire de base
et pour discuter sur un NG il est utile de s'entendre
sur le vocabulaire.

SF.



merci de cette explication je vois mieux pourquoi j'arrive pas au résultat
que je souhaite