Come inizializzare un array in Java?


434

Sto inizializzando un array come questo:

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 indica un errore su questa riga:

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

Come posso risolvere il problema?


3
È possibile sostituire "int data [] = new int [10]" con "int data []". Stai sprecando memoria lì.
missingfaktor il

Risposte:


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

Quanto sopra non è corretto (errore di sintassi). Significa che stai assegnando un array a data[10]cui può contenere solo un elemento.

Se si desidera inizializzare un array, provare a utilizzare l' inizializzatore di array :

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};

Notare la differenza tra le due dichiarazioni. Quando si assegna un nuovo array a una variabile dichiarata, è newnecessario utilizzare.

Anche se si corregge la sintassi, l'accesso data[10]non è ancora corretta (è possibile solo l'accesso data[0]a data[9]causa dell'indice di array in Java è 0-based). L'accesso data[10]genererà un'eccezione ArrayIndexOutOfBoundsException .


2
In realtà, il motivo principale per cui è errato è che si tratta di un errore di sintassi! L'AIOB accadrebbe solo se la sintassi fosse accettabile.
Stephen C,

1
Potresti aiutarmi, per favore, se dichiaro un array come questo: public static void product(int[] array){ int[] productArray = new int[array.length];e voglio impostare tutti i valori di productArray zero , cosa dovrei scrivere? (Penso che dovrei scrivere un ciclo e impostare tutti i valori su zero, c'è un modo migliore per farlo?)
Hengameh,

2
@Hengameh: è inizializzato su 0 per impostazione predefinita. Vedere stackoverflow.com/a/2154340/1000655
Neal Gokli

39

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


1
+1. Hai una parentesi graffa aggiuntiva. Si può anche scrivere: data [0] = 10; dati [1] = 20; .... dopo int data [] = new int [10], ma è troppo codice e finirà per fare la stessa cosa.
Hamish Grubijan,

28

Quando si crea un array di dimensioni 10, vengono allocati 10 slot, ma da 0 a 9. Questo per loop potrebbe aiutarti a vederlo un po 'meglio.

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;
        }
    }
}

16

Tu puoi fare:

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

3
Mi chiedo quale valore questo aggiunge alla risposta accettata di 5 anni prima.
TylerH,

12

Sintassi

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

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

Esempio :

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

8

Invece di imparare siti Web non ufficiali, impara dal sito Web Oracle

segue il link: clicca qui

* È possibile trovare l'inizializzazione e la dichiarazione con la descrizione completa *

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
}

Input : 10 // dimensione array 10 20 30 40 50 60 71 80 90 91

Visualizzazione dei dati:

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

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


3

Non è possibile inizializzare un array come quello. Oltre a ciò che altri hanno suggerito, puoi fare:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;

3

Se si desidera inizializzare un array in un costruttore, non è possibile utilizzare tali inizializzatori di array come.

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

Basta cambiarlo in

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

Non è necessario specificare la dimensione con data[10] = new int[] { 10,...,91} Basta dichiarare la proprietà / campo int[] data;e inizializzarla come sopra. La versione corretta del tuo codice sarebbe simile alla seguente:

public class Array {

    int[] data;

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

}

Come vedi le parentesi sono vuote. Non è necessario indicare la dimensione tra parentesi, poiché l'inizializzazione e la sua dimensione sono specificate dal conteggio degli elementi tra parentesi graffe.


2

si sta tentando di impostare il decimo elemento dell'array per provare l'array

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

FTFY


0

Forse questo funzionerà:

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};
    }
}

6
In cosa differisce dalla domanda? Per favore, estendi la tua risposta!
Alexander Vogt,

2
L'inizializzatore di array non è consentito nei costruttori !!!! Dovresti almeno provare le tue proposte, prima di pubblicarle ...
Sedat Kilinc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.