44 votes

L'initialisateur de tableau n'est pas autorisé ici

Je travaille sur un projet Android et je reçois une erreur que je ne comprends pas :

L'initialisateur de tableau n'est pas autorisé ici

J'ai essayé de simplifier mon code et il se résume à ceci

public class MainActivity extends Activity{

    int pos = {0, 1, 2};

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        pos = {2, 1, 0};
    }
}

Qu'est-ce qui se passe ici ?

96voto

Jayanth Points 2337

Vous devez utiliser

pos = new int[]{1,2,3};

Vous ne pouvez utiliser que la syntaxe abrégée int[] pos = {0,1,2}; au moment de l'initialisation de la variable.

private int[] values1 = new int[]{1,2,3,4};
private int[] values2 = {1,2,3,4}; // short form is allowed only at variable initialization

11voto

Robert Hume Points 739

Votre déclaration d'initialisation est fausse : vous devez ajouter des crochets pour déclarer un tableau (et ici vous pouvez omettre l'élément new car vous déclarez et initialisez la variable en même temps) :

int[] pos = { 0, 1, 2 };

Dans le onCreate vous ne pouvez pas omettre la méthode new mot-clé parce que la variable était déjà déclarée, donc vous devez écrire :

pos = new int[] { 2, 1, 0 };

Vous pouvez lire le Documentation Oracle y el Spécifications du langage Java pour plus de détails.

7voto

saigopi Points 2873

Utiliser la syntaxe suivante pour déclarer/initialiser un tableau vide, puis le remplir de données :

String[] menuArray = {};
menuArray = new String[]{"new item","item 2"};

0voto

A. Abdullah Points 1

Il s'agit d'une erreur de compilation Illegal Initializer for int. Vous pouvez résoudre ce problème en ajoutant des accolades après le type de données de votre variable comme ceci :

int[] pos = {0, 1, 2};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X