2010-08-13 4 views
1

Je suis très novice en programmation et il me manque quelque chose ici. La première section fonctionne. La deuxième section explose avec une erreur. Pourquoi donc?JAVA - Problèmes lors de l'initialisation d'éléments individuels d'un tableau

// this works 
private static int[] test2 = {1,2,3}; 

// this is ok 
private static int[] test1 = new int[3]; 
// these three lines do not work 
// tooltip states ... "cannot find symbol. class test1. ']' expected." 
test1[0] = 1; 
test1[1] = 2; 
test1[2] = 3; 
+0

cela devrait fonctionner, vous voudrez peut-être afficher le code complet –

+0

pouvez-vous s'il vous plaît envoyer votre fichier java entier? Il est difficile de déterminer la portée de ce que vous avez collé en fonction de votre question actuelle. – Catchwa

Répondre

4

D'après ce que vous avez posté, les lignes

test1[0] = 1; 
test1[1] = 2; 
test1[2] = 3; 

besoin d'être à l'intérieur d'une méthode ou d'un constructeur. On dirait que vous les avez dehors au niveau de la classe. Disons MyClass est le nom de votre classe. Ajouter un constructeur et mettre les trois déclarations à l'intérieur:

MyClass { 
    test1[0] = 1; 
    test1[1] = 2; 
    test1[2] = 3; 
} 

Edit: Vous ne pouvez déclarer des variables directement à l'intérieur de la classe. Une déclaration de déclaration peut cependant comprennent également l'initialisation (sur la même ligne):

int[] arrayA; // declare an array of integers 
int[] arrayB = new int[5]; // declare and create an array of integers 
int[] arrayC = {1, 2, 3}; // declare, create and initialize an array of integers 

qui suit, d'autre part, n'est pas une déclaration et implique que l'initialisation:

arrayB[0] = 1; 

et donc il ne peut pas aller directement sous la classe. Il doit être inclus dans une méthode, un constructeur ou un bloc d'initialisation.

Voir aussi:

Arrays Java tutorial at Oracle

+0

Bonne estimation. Je n'ai pas pensé qu'il pourrait effectivement mettre l'initialisation juste après la définition. –

+0

C'est ce que j'ai fait - je les ai eu au niveau de la classe par rapport au constructeur. Je suppose que je me demandais juste pourquoi la première façon d'initialisation (int [] var = {x, y, z}) fonctionne au niveau de la classe et l'inverse ne fonctionne pas. L'esprit ahurissant. – ConfusedWithJava

+0

@ConfusedWithJava - voir ma modification ci-dessus – samitgaur

2

Pour travailler votre fichier source java doit être quelque chose comme ceci:

public class Test 
{ 
    // this works 
    private static int[] test2 = {1,2,3}; 

    // this is ok 
    private static int[] test1 = new int[3]; 

    public static void main(String args[]){ 

     test1[0] = 1; 
     test1[1] = 2; 
     test1[2] = 3; 
    } 
} 
1

Vous pouvez aussi mettre le code dans un bloc d'initialisation statique qui est exécuté lorsque la classe est chargée.

public class Test { 
    // this works 
    private static int[] test2 = {1,2,3}; 

    // this is ok 
    private static int[] test1 = new int[3]; 

    static { 
     test1[0] = 1; 
     test1[1] = 2; 
     test1[2] = 3; 
    } 
}