Java, initialisation d'un tableau de classe

risperidone -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je suis en train d'écrire un programme en java et je rencontre un problème :
J'ai créé une structure nommé "axxe" qui ne contient que 2 variables de type INT
-
-
J'ai ensuite créé une autre structure (autresStruct) qui contient, entre autres, un tableau de "axxe" que je nomme tab ...
-
-
dans mon main je créé une variable de type "autresStruct" ( autresStruct a = new autresStruct(); )
-
-
puis j'essaie d'initialiser le tableau avec : axxe a.tab[] = new axxe[4]; ( j'ai aussi essayer avec un "for (int i = 0; i < 4; i++){a.tab[i] = new axxe();}" sans succès )
-
-
Et le compilateur m'agresse et affiche des messages d'erreurs generiques qui ne m'aide absolument pas ...
-
-
Je debute en java et il y a surement pas grand chose mais je bloque depuis un moment , donc je viens solliciter votre aide avant de m'arracher les cheveux ...

A voir également:

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Il nous faut au minimum les messages d'erreurs du compilateur, et le code correspondant (pas tout, les lignes erronées devraient suffire).

Avec le peu de code que tu nous as mis, la syntaxe est fausse pour :
axxe a.tab[] = new axxe[4];
Tu ne peux pas déclarer a.tab, c'est à l'objet a de le faire, la seule chose que tu puisses faire c'est une initialisation : a.tab = new axxe[4], mais là encore normalement c'est à l'objet a de le faire. La notion d'encapsulation en POO est fondamentale, tu ne peux pas te servir des classes Java comme on utiliserait des struct en C...
0
risperidone
 
Merci pour ta reponse, voici le code en question :

static class Axxe
{
int x;
int y;
}

static class autresStruct
{
Axxe ax[];
}

public static void main(String args[])
{
autresStruct str = new autresStruct();

str.ax = new ax[4]; /* j'ai corrigé cette ligne en fonction de reponse precedente */
}

Grace a ta réponse le compilateur ne râle plus plus mais l'exécution j'ai "Exception in thread "main" java.lang.NullPointerException"

n'y t-il aurait pas un moyen en java de créer une structure toute simple sans nécessairement tomber dans la POO ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Le compilateur ne râle plus, mais il devrait !
new ax[4]; ne doit pas être compilé, car ax n'est pas une classe.

En fait ta "structure" (ce qui n'a pas de sens en Java) autresStruct, ne sert à rien !
Utilises directement Axxe[] tab = new Axxe[4]; dans ton main.

De plus évite les classes static, ça ne te sers à rien, si tu veux faire une classe Axxe ça se comprend, mais fait la bien, il n'y a aucun intérêt à vouloir contourner la POO en Java, alors que c'est toute sa force !
0