Comment initialiser un tableau en Java?

434

J'initialise un tableau comme celui-ci:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }     
}

NetBeans pointe une erreur sur cette ligne:

data[10] = {10,20,30,40,50,60,71,80,90,91};

Comment puis-je résoudre le problème?

bavard
la source
3
Vous pouvez remplacer ce "int data [] = new int [10]" par "int data []". Vous y perdez de la mémoire.
missingfaktor

Réponses:

642
data[10] = {10,20,30,40,50,60,71,80,90,91};

Ce qui précède n'est pas correct (erreur de syntaxe). Cela signifie que vous affectez un tableau àdata[10] auquel ne peut contenir qu'un élément.

Si vous souhaitez initialiser un tableau, essayez d'utiliser Array Initializer :

int[] data = {10,20,30,40,50,60,71,80,90,91};

// or

int[] data;
data = new int[] {10,20,30,40,50,60,71,80,90,91};

Notez la différence entre les deux déclarations. Lors de l'attribution d'un nouveau tableau à une variable déclarée, newdoit être utilisé.

Même si vous corrigez la syntaxe, l' accès data[10]est toujours incorrecte (vous ne pouvez accéder data[0]à data[9]parce que l' index des tableaux en Java est basé sur 0). L'accès lèveradata[10] une ArrayIndexOutOfBoundsException .

Prasoon Saurav
la source
2
En fait, la principale raison pour laquelle elle est incorrecte est qu'il s'agit d'une erreur de syntaxe! L'AIOB ne se produirait que si la syntaxe était acceptable.
Stephen C
1
Pourriez-vous m'aider, si je déclare un tableau comme celui-ci: public static void product(int[] array){ int[] productArray = new int[array.length];et que je veux définir toutes les valeurs de productArray zéro , que dois-je écrire? (Je pense que je devrais écrire une boucle et mettre toutes les valeurs à zéro, y a-t-il une meilleure façon de le faire?)
Hengameh
2
@Hengameh: il est initialisé à 0 par défaut. Voir stackoverflow.com/a/2154340/1000655
Neal Gokli
39

Essayer data = new int[] {10,20,30,40,50,60,71,80,90,91 };

Dean Povey
la source
1
+1. Vous avez une orthèse d'ouverture supplémentaire. On peut également écrire: data [0] = 10; données [1] = 20; .... après int data [] = new int [10], mais c'est trop de code et cela finira par faire la même chose.
Hamish Grubijan
28

Lorsque vous créez un tableau de taille 10, il alloue 10 emplacements mais de 0 à 9. Cette boucle for peut vous aider à voir cela un peu mieux.

public class Array {
    int[] data = new int[10]; 
    /** Creates a new instance of an int Array */
    public Array() {
        for(int i = 0; i < data.length; i++) {
            data[i] = i*10;
        }
    }
}
Bernie Perez
la source
16

Tu peux faire:

int[] data = {10,20,30,40,50,60,71,80,90,91};

la source
3
Je me demande quelle valeur cela ajoute en plus de la réponse acceptée des 5 années précédentes.
TylerH
12

Syntaxe

 Datatype[] variable = new Datatype[] { value1,value2.... }

 Datatype variable[]  = new Datatype[] { value1,value2.... }

Exemple :

int [] points = new int[]{ 1,2,3,4 };
Vinayak
la source
8

Plutôt que d'apprendre des sites Web non officiels, apprenez du site Web Oracle

lien suivant: Cliquez ici

* Vous pouvez trouver l'initialisation ainsi que la déclaration avec une description complète *

int n; // size of array here 10
int[] a = new int[n];
for (int i = 0; i < a.length; i++)
{
    a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
}

Entrée : 10 // taille du tableau 10 20 30 40 50 60 71 80 90 91

Affichage des données:

for (int i = 0; i < a.length; i++) 
{
    System.out.println(a[i] + " ");
}

Sortie: 10 20 30 40 50 60 71 80 90 91

Shiva Nandam Sirmarigari
la source
3

Vous ne pouvez pas initialiser un tableau comme ça. En plus de ce que d'autres ont suggéré, vous pouvez faire:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;
fastcodejava
la source
3

Si vous souhaitez initialiser un tableau dans un constructeur, vous ne pouvez pas utiliser ces initialiseurs de tableau comme.

data= {10,20,30,40,50,60,71,80,90,91};

Changez-le simplement en

data = new int[] {10,20,30,40,50,60,71,80,90,91};

Vous n'avez pas besoin de spécifier la taille avec data[10] = new int[] { 10,...,91} Déclarez simplement la propriété / le champ avec int[] data;et initialisez-le comme ci-dessus. La version corrigée de votre code ressemblerait à ceci:

public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}

Comme vous le voyez, le support est vide. Il n'est pas nécessaire de dire la taille entre les crochets, car l'initialisation et sa taille sont spécifiées par le nombre d'éléments entre les crochets.

Sedat Kilinc
la source
2

vous essayez de définir le 10e élément du tableau sur le tableau essayer

data = new int[] {10,20,30,40,50,60,71,80,90,91};

FTFY

schubySteve
la source
0

Peut-être que cela fonctionnera:

public class Array {

    int data[] = new int[10]; 
    /* Creates a new instance of Array */
    public Array() {
        data= {10,20,30,40,50,60,71,80,90,91};
    }
}
Sajjad Behravesh
la source
6
En quoi cela diffère-t-il de la question? Veuillez prolonger votre réponse!
Alexander Vogt
2
Les initialiseurs de tableau ne sont pas autorisés dans les constructeurs !!!! Vous devriez au moins tester vos propositions, avant de les poster ...
Sedat Kilinc